<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OpenCV on 醉后的星星</title><link>https://kizx.github.io/tags/opencv/</link><description>Recent content in OpenCV on 醉后的星星</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>kizx</copyright><lastBuildDate>Thu, 04 Jun 2020 13:31:51 +0000</lastBuildDate><atom:link href="https://kizx.github.io/tags/opencv/index.xml" rel="self" type="application/rss+xml"/><item><title>CLion编译运行OpenGL项目</title><link>https://kizx.github.io/post/clion%E7%BC%96%E8%AF%91%E8%BF%90%E8%A1%8Copengl%E9%A1%B9%E7%9B%AE/</link><pubDate>Thu, 04 Jun 2020 13:31:51 +0000</pubDate><guid>https://kizx.github.io/post/clion%E7%BC%96%E8%AF%91%E8%BF%90%E8%A1%8Copengl%E9%A1%B9%E7%9B%AE/</guid><description>&lt;p>前面已经用Visual Studio成功运行了OpenGL了，但是VS的界面比较丑，而且代码提示和补全等各方面不够人性化（主要是我不习惯），相比之下，JB家的CLion虽然运行上慢一点，bug多一点，配置麻烦一点（喂！这缺点太多了吧），但是为了颜值和流畅的编程体验，用一下也不是不可以。&lt;/p>
&lt;h2 id="配置">&lt;a href="#%e9%85%8d%e7%bd%ae" class="header-anchor">&lt;/a>配置
&lt;/h2>&lt;p>安装什么的就不说了，新建一个项目，Clion会自动生成一个&lt;code>CMakeLists.txt&lt;/code>和&lt;code>main.cpp&lt;/code>，点击运行没毛病，那就进入opengl的环境配置。
我这里用的是glut库，别的库参照着配置问题应该不大。在vs里我们是通过右键项目属性设置“三大件”的，但CLion是通过cmake来管理编译和链接的，只能通过手写CMakelists来进行配置。其实配置思路都差不多，手写配置还可以更清晰。
以下是&lt;code>CMakeLists.txt&lt;/code>内容：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cmake" data-lang="cmake">&lt;span style="display:flex;">&lt;span>cmake_minimum_required(&lt;span style="color:#e6db74">VERSION&lt;/span> &lt;span style="color:#e6db74">3.16&lt;/span>)&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>project(&lt;span style="color:#e6db74">gl_demo&lt;/span>)&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>set(&lt;span style="color:#e6db74">CMAKE_CXX_STANDARD&lt;/span> &lt;span style="color:#e6db74">14&lt;/span>)&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>include_directories(&lt;span style="color:#e6db74">C:/dev/glut/include&lt;/span>) &lt;span style="color:#75715e"># 添加include头文件目录
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>link_directories(&lt;span style="color:#e6db74">C:/dev//glut/lib&lt;/span>) &lt;span style="color:#75715e"># 添加lib库目录
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>add_executable(&lt;span style="color:#e6db74">gl_demo&lt;/span> &lt;span style="color:#e6db74">main.cpp&lt;/span>)&lt;span style="color:#960050;background-color:#1e0010">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#960050;background-color:#1e0010">&lt;/span>target_link_libraries(&lt;span style="color:#e6db74">gl_demo&lt;/span> &lt;span style="color:#e6db74">glut32.lib&lt;/span> &lt;span style="color:#e6db74">opengl32.lib&lt;/span>) &lt;span style="color:#75715e"># 添加链接的具体lib项
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>以下是demo&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cpp" data-lang="cpp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// Lines.c
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// OpenGL SuperBible, Chapter 4
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// Demonstrates primitive GL_LINES
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// Program by Richard S. Wright Jr.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;gl/glut.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;math.h&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// Define a constant for the value of PI
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#75715e">#define GL_PI 3.1415f
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// Rotation amounts
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">static&lt;/span> GLfloat xRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">static&lt;/span> GLfloat yRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// Called to draw scene
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">RenderScene&lt;/span>(&lt;span style="color:#66d9ef">void&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GLfloat x, y, z, angle; &lt;span style="color:#75715e">// Storage for coordinates and angles
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Clear the window with current clearing color
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glClear(GL_COLOR_BUFFER_BIT);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Save matrix state and do the rotation
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glPushMatrix();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glRotatef(xRot, &lt;span style="color:#ae81ff">1.0f&lt;/span>, &lt;span style="color:#ae81ff">0.0f&lt;/span>, &lt;span style="color:#ae81ff">0.0f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glRotatef(yRot, &lt;span style="color:#ae81ff">0.0f&lt;/span>, &lt;span style="color:#ae81ff">1.0f&lt;/span>, &lt;span style="color:#ae81ff">0.0f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Call only once for all remaining points
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glBegin(GL_LINES);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> z &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> (angle &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>; angle &lt;span style="color:#f92672">&amp;lt;=&lt;/span> GL_PI &lt;span style="color:#f92672">*&lt;/span> &lt;span style="color:#ae81ff">3.0f&lt;/span>; angle &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">0.5f&lt;/span>) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Top half of the circle
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> x &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">50.0f&lt;/span> &lt;span style="color:#f92672">*&lt;/span> cos(angle);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> y &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">50.0f&lt;/span> &lt;span style="color:#f92672">*&lt;/span> sin(angle);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(x, y, z);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Bottom half of the circle
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> x &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">50.0f&lt;/span> &lt;span style="color:#f92672">*&lt;/span> cos(angle &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#ae81ff">3.1415f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> y &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">50.0f&lt;/span> &lt;span style="color:#f92672">*&lt;/span> sin(angle &lt;span style="color:#f92672">+&lt;/span> &lt;span style="color:#ae81ff">3.1415f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(x, y, z);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Done drawing points
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glEnd();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Restore transformations
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glPopMatrix();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Flush drawing commands
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glutSwapBuffers();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// This function does any needed initialization on the rendering
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">SetupRC&lt;/span>() {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Black background
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glClearColor(&lt;span style="color:#ae81ff">0.0f&lt;/span>, &lt;span style="color:#ae81ff">0.0f&lt;/span>, &lt;span style="color:#ae81ff">0.0f&lt;/span>, &lt;span style="color:#ae81ff">1.0f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Set drawing color to green
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glColor3f(&lt;span style="color:#ae81ff">0.0f&lt;/span>, &lt;span style="color:#ae81ff">1.0f&lt;/span>, &lt;span style="color:#ae81ff">0.0f&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">SpecialKeys&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> key, &lt;span style="color:#66d9ef">int&lt;/span> x, &lt;span style="color:#66d9ef">int&lt;/span> y) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> GLUT_KEY_UP)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">-=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> GLUT_KEY_DOWN)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> GLUT_KEY_LEFT)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">-=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> GLUT_KEY_RIGHT)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">356.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">1.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">355.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">356.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">1.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">355.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Refresh the Window
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glutPostRedisplay();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">KeyPressFunc&lt;/span>(&lt;span style="color:#66d9ef">unsigned&lt;/span> &lt;span style="color:#66d9ef">char&lt;/span> key, &lt;span style="color:#66d9ef">int&lt;/span> x, &lt;span style="color:#66d9ef">int&lt;/span> y) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">32&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">-=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">97&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">98&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">-=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">99&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">+=&lt;/span> &lt;span style="color:#ae81ff">5.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">356.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">1.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> xRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">355.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;gt;&lt;/span> &lt;span style="color:#ae81ff">356.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> (key &lt;span style="color:#f92672">&amp;lt;&lt;/span> &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">1.0f&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> yRot &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">355.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Refresh the Window
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glutPostRedisplay();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">void&lt;/span> &lt;span style="color:#a6e22e">ChangeSize&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> w, &lt;span style="color:#66d9ef">int&lt;/span> h) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GLfloat nRange &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">100.0f&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Prevent a divide by zero
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#66d9ef">if&lt;/span> (h &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> h &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Set Viewport to window dimensions
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glViewport(&lt;span style="color:#ae81ff">0&lt;/span>, &lt;span style="color:#ae81ff">0&lt;/span>, w, h);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Reset coordinate system
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> glMatrixMode(GL_PROJECTION);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glLoadIdentity();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e">// Establish clipping volume (left, right, bottom, top, near, far)
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> &lt;span style="color:#66d9ef">if&lt;/span> (w &lt;span style="color:#f92672">&amp;lt;=&lt;/span> h)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glOrtho(&lt;span style="color:#f92672">-&lt;/span>nRange, nRange, &lt;span style="color:#f92672">-&lt;/span>nRange &lt;span style="color:#f92672">*&lt;/span> h &lt;span style="color:#f92672">/&lt;/span> w, nRange &lt;span style="color:#f92672">*&lt;/span> h &lt;span style="color:#f92672">/&lt;/span> w, &lt;span style="color:#f92672">-&lt;/span>nRange, nRange);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">else&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glOrtho(&lt;span style="color:#f92672">-&lt;/span>nRange &lt;span style="color:#f92672">*&lt;/span> w &lt;span style="color:#f92672">/&lt;/span> h, nRange &lt;span style="color:#f92672">*&lt;/span> w &lt;span style="color:#f92672">/&lt;/span> h, &lt;span style="color:#f92672">-&lt;/span>nRange, nRange, &lt;span style="color:#f92672">-&lt;/span>nRange, nRange);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glMatrixMode(GL_MODELVIEW);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glLoadIdentity();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> argc, &lt;span style="color:#66d9ef">char&lt;/span> &lt;span style="color:#f92672">*&lt;/span>argv[]) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GLsizei h &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">500&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GLsizei w &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">500&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> GLsizei x &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">200&lt;/span>, y &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">100&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutInit(&lt;span style="color:#f92672">&amp;amp;&lt;/span>argc, argv);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutInitDisplayMode(GLUT_DOUBLE &lt;span style="color:#f92672">|&lt;/span> GLUT_RGB &lt;span style="color:#f92672">|&lt;/span> GLUT_DEPTH);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutInitWindowSize(h, w);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutInitWindowPosition(x, y);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutCreateWindow(&lt;span style="color:#e6db74">&amp;#34;Lines Example&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutDisplayFunc(RenderScene);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutReshapeFunc(ChangeSize);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutSpecialFunc(SpecialKeys);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutKeyboardFunc(KeyPressFunc);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> SetupRC();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutMainLoop();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Python运行OpenGL示例</title><link>https://kizx.github.io/post/python%E8%BF%90%E8%A1%8Copengl%E7%A4%BA%E4%BE%8B/</link><pubDate>Tue, 02 Jun 2020 15:10:00 +0000</pubDate><guid>https://kizx.github.io/post/python%E8%BF%90%E8%A1%8Copengl%E7%A4%BA%E4%BE%8B/</guid><description>&lt;p>python的opengl库叫&lt;code>PyOpenGL&lt;/code>，安装这个库的时候要注意位数版本要正确，比如我的python37是32位的，安装&lt;code>PyOpenGL-3.1.5-cp37-cp37m-win32.whl&lt;/code>才行，默认pip安装的运行时可能会有问题，所以需要手动下载安装对应版本的whl。&lt;/p>
&lt;h2 id="demo">&lt;a href="#demo" class="header-anchor">&lt;/a>demo
&lt;/h2>&lt;p>这是一个直接运行的demo&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># !/usr/bin/python&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># -*- coding: utf-8 -*-&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># -------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># quidam_01.py 三维空间的世界坐标系和三角形&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># -------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> OpenGL.GL &lt;span style="color:#f92672">import&lt;/span> &lt;span style="color:#f92672">*&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> OpenGL.GLUT &lt;span style="color:#f92672">import&lt;/span> &lt;span style="color:#f92672">*&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">draw&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># ---------------------------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glBegin(GL_LINES) &lt;span style="color:#75715e"># 开始绘制线段（世界坐标系）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 以红色绘制x轴&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为红色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置x轴顶点（x轴负方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置x轴顶点（x轴正方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 以绿色绘制y轴&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为绿色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置y轴顶点（y轴负方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置y轴顶点（y轴正方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 以蓝色绘制z轴&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为蓝色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.8&lt;/span>) &lt;span style="color:#75715e"># 设置z轴顶点（z轴负方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.8&lt;/span>) &lt;span style="color:#75715e"># 设置z轴顶点（z轴正方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glEnd() &lt;span style="color:#75715e"># 结束绘制线段&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># ---------------------------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glBegin(GL_TRIANGLES) &lt;span style="color:#75715e"># 开始绘制三角形（z轴负半区）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为红色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.5&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.366&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.5&lt;/span>) &lt;span style="color:#75715e"># 设置三角形顶点&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为绿色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.5&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.366&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.5&lt;/span>) &lt;span style="color:#75715e"># 设置三角形顶点&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为蓝色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.5&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.5&lt;/span>) &lt;span style="color:#75715e"># 设置三角形顶点&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glEnd() &lt;span style="color:#75715e"># 结束绘制三角形&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># ---------------------------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glFlush() &lt;span style="color:#75715e"># 清空缓冲区，将指令送往硬件立即执行&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> __name__ &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#e6db74">&amp;#34;__main__&amp;#34;&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutInit() &lt;span style="color:#75715e"># 1. 初始化glut库&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutCreateWindow(&lt;span style="color:#e6db74">&amp;#39;Quidam Of OpenGL&amp;#39;&lt;/span>) &lt;span style="color:#75715e"># 2. 创建glut窗口&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutDisplayFunc(draw) &lt;span style="color:#75715e"># 3. 注册回调函数draw()&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glutMainLoop() &lt;span style="color:#75715e"># 4. 进入glut主循环&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="pyqtopengl">&lt;a href="#pyqtopengl" class="header-anchor">&lt;/a>pyqtopengl
&lt;/h2>&lt;p>这是pyqt中QOpenGLWidget的demo&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># !/usr/bin/python&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># -*- coding: utf-8 -*-&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> PySide2.QtWidgets &lt;span style="color:#f92672">import&lt;/span> &lt;span style="color:#f92672">*&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> OpenGL.GL &lt;span style="color:#f92672">import&lt;/span> &lt;span style="color:#f92672">*&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">from&lt;/span> OpenGL.GLUT &lt;span style="color:#f92672">import&lt;/span> &lt;span style="color:#f92672">*&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">class&lt;/span> &lt;span style="color:#a6e22e">MyOpenglWidget&lt;/span>(QOpenGLWidget):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">__init__&lt;/span>(self, parent&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#66d9ef">None&lt;/span>):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> super()&lt;span style="color:#f92672">.&lt;/span>&lt;span style="color:#a6e22e">__init__&lt;/span>(parent)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">initializeGL&lt;/span>(self):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">pass&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">paintGL&lt;/span>(self):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glBegin(GL_LINES) &lt;span style="color:#75715e"># 开始绘制线段（世界坐标系）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 以红色绘制x轴&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为红色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置x轴顶点（x轴负方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置x轴顶点（x轴正方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 以绿色绘制y轴&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为绿色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置y轴顶点（y轴负方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.8&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>) &lt;span style="color:#75715e"># 设置y轴顶点（y轴正方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 以蓝色绘制z轴&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glColor4f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>, &lt;span style="color:#ae81ff">1.0&lt;/span>) &lt;span style="color:#75715e"># 设置当前颜色为蓝色不透明&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">0.8&lt;/span>) &lt;span style="color:#75715e"># 设置z轴顶点（z轴负方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glVertex3f(&lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.0&lt;/span>, &lt;span style="color:#ae81ff">0.8&lt;/span>) &lt;span style="color:#75715e"># 设置z轴顶点（z轴正方向）&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> glEnd() &lt;span style="color:#75715e"># 结束绘制线段&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">pass&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">resizeGL&lt;/span>(self, w, h):
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">pass&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="参考">&lt;a href="#%e5%8f%82%e8%80%83" class="header-anchor">&lt;/a>参考
&lt;/h2>&lt;p>&lt;a class="link" href="https://blog.csdn.net/xufive/article/details/86565130" target="_blank" rel="noopener"
>https://blog.csdn.net/xufive/article/details/86565130&lt;/a>
&lt;a class="link" href="https://doc.qt.io/qtforpython/PySide2/QtWidgets/QOpenGLWidget.html?highlight=qopenglwidget" target="_blank" rel="noopener"
>https://doc.qt.io/qtforpython/PySide2/QtWidgets/QOpenGLWidget.html?highlight=qopenglwidget&lt;/a>&lt;/p></description></item><item><title>OpenCV + Qt 配置</title><link>https://kizx.github.io/post/opencv--+-qt-%E9%85%8D%E7%BD%AE/</link><pubDate>Mon, 07 Oct 2019 14:20:00 +0000</pubDate><guid>https://kizx.github.io/post/opencv--+-qt-%E9%85%8D%E7%BD%AE/</guid><description>&lt;p>假设已经下载安装了OpenCV和Qt并且配置好了OpenCV的环境变量，环境变量设置可以参考以前的文章。&lt;/p>
&lt;h2 id="cmake编译">&lt;a href="#cmake%e7%bc%96%e8%af%91" class="header-anchor">&lt;/a>CMake编译
&lt;/h2>&lt;p>许多教程都会从CMake编译OpenCV开始，但其实我们下载的安装包解压后已经编译好了，bulid文件下就是编译后的文件，除非有特殊要求，可以不用亲自编译。主要是我尝试用CMake编译Source但是报错失败了，就此作罢。&lt;/p>
&lt;h2 id="编写pri文件">&lt;a href="#%e7%bc%96%e5%86%99pri%e6%96%87%e4%bb%b6" class="header-anchor">&lt;/a>编写pri文件
&lt;/h2>&lt;p>新建一个文件，重命名为&lt;code>opencv.pri&lt;/code>，写入以下内容，其实和在VS2017里配置库环境是一样的道理。&lt;/p>
&lt;pre tabindex="0">&lt;code class="language-pri" data-lang="pri">INCLUDEPATH += c:/opencv/build/include
Debug: {
LIBS += -lc:/opencv/build/x64/vc15/lib/opencv_world411d
}
Release: {
LIBS += -lc:/opencv/build/x64/vc15/lib/opencv_world411
}
&lt;/code>&lt;/pre>&lt;h2 id="新建工程">&lt;a href="#%e6%96%b0%e5%bb%ba%e5%b7%a5%e7%a8%8b" class="header-anchor">&lt;/a>新建工程
&lt;/h2>&lt;p>在Qt里新建一个最普通的工程，编译器选择VS2017 64bit，新建完成后在工程的pro文件最后添加刚才的pri文件路径：
&lt;code>include(c:/opencv/opencv.pri)&lt;/code>&lt;/p>
&lt;h2 id="测试代码">&lt;a href="#%e6%b5%8b%e8%af%95%e4%bb%a3%e7%a0%81" class="header-anchor">&lt;/a>测试代码
&lt;/h2>&lt;p>在main函数里进行测试&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cpp" data-lang="cpp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;#34;mainwindow.h&amp;#34;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;QApplication&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;#34;opencv2/opencv.hpp&amp;#34;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>(&lt;span style="color:#66d9ef">int&lt;/span> argc, &lt;span style="color:#66d9ef">char&lt;/span> &lt;span style="color:#f92672">*&lt;/span>argv[])
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> QApplication a(argc, argv);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">using&lt;/span> &lt;span style="color:#66d9ef">namespace&lt;/span> cv;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Mat img &lt;span style="color:#f92672">=&lt;/span> imread(&lt;span style="color:#e6db74">&amp;#34;../001.png&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> imshow(&lt;span style="color:#e6db74">&amp;#34;TEST&amp;#34;&lt;/span>,img);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> waitKey(&lt;span style="color:#ae81ff">0&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> a.exec();
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>OpenCV + Visual Studio2017 配置</title><link>https://kizx.github.io/post/opencv-+-visual-studio2017-%E9%85%8D%E7%BD%AE/</link><pubDate>Wed, 11 Sep 2019 17:25:00 +0000</pubDate><guid>https://kizx.github.io/post/opencv-+-visual-studio2017-%E9%85%8D%E7%BD%AE/</guid><description>&lt;h2 id="1-下载安装opencv并添加环境变量">&lt;a href="#1-%e4%b8%8b%e8%bd%bd%e5%ae%89%e8%a3%85opencv%e5%b9%b6%e6%b7%bb%e5%8a%a0%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f" class="header-anchor">&lt;/a>1. 下载安装OpenCV并添加环境变量
&lt;/h2>&lt;p>下载地址：https://opencv.org/releases/
安装参考：http://c.biancheng.net/view/1104.html
我安装的是Opencv4.1.1版本，然后管理员cmd命令添加环境变量，其实不用命令手动添加也行,不过这一步似乎不是必须的，但可能会与某些步骤有关联。
&lt;code>setx -m OPENCV_DIR C:\opencv\build\x64\vc15&lt;/code>
&lt;img src="https://pan.2bboy.com/img/2019/10/3652238186.png"
loading="lazy"
>
&lt;img src="https://pan.2bboy.com/img/2019/10/4000912026.png"
loading="lazy"
>
然后添加以下OpenCV环境变量到PATH中，VS2017应该对应的是vc15，不过都加进去也不会出错。路径直接填%OPENCV_DIR%\bin也行。
&lt;code>C:\opencv\build\x64\vc14\bin&lt;/code>
&lt;code>C:\opencv\build\x64\vc15\bin&lt;/code>&lt;/p>
&lt;h2 id="2-新建工程">&lt;a href="#2-%e6%96%b0%e5%bb%ba%e5%b7%a5%e7%a8%8b" class="header-anchor">&lt;/a>2. 新建工程
&lt;/h2>&lt;p>打开vs2017，新建控制台程序，将系统平台改成64位，在项目上右键属性配置下列项目&lt;/p>
&lt;ul>
&lt;li>
&lt;p>点击VC++目录-&amp;gt;包含目录，添加include文件夹目录
&lt;img src="https://pan.2bboy.com/img/2019/10/20190912174155.png"
loading="lazy"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>点击VC++目录-&amp;gt;库目录，添加lib文件夹目录
&lt;img src="https://pan.2bboy.com/img/2019/10/20190912174251.png"
loading="lazy"
>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>点击链接库-&amp;gt;输入-&amp;gt;附加项，添加lib，其中opencv_world411d.lib为debug模式用的，opencv_world411.lib为release模式用的，都可以在lib文件夹下找到
&lt;img src="https://pan.2bboy.com/img/2019/10/20190912174625.png"
loading="lazy"
>&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="3-测试代码">&lt;a href="#3-%e6%b5%8b%e8%af%95%e4%bb%a3%e7%a0%81" class="header-anchor">&lt;/a>3. 测试代码
&lt;/h2>&lt;p>打开一张图片进行测试&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-cpp" data-lang="cpp">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;opencv2/core.hpp&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">#include&lt;/span> &lt;span style="color:#75715e">&amp;lt;opencv2/highgui.hpp&amp;gt;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&lt;span style="color:#66d9ef">using&lt;/span> &lt;span style="color:#66d9ef">namespace&lt;/span> cv;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">int&lt;/span> &lt;span style="color:#a6e22e">main&lt;/span>()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>{
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> Mat img &lt;span style="color:#f92672">=&lt;/span> imread(&lt;span style="color:#e6db74">&amp;#34;C:&lt;/span>&lt;span style="color:#ae81ff">\\&lt;/span>&lt;span style="color:#e6db74">Users&lt;/span>&lt;span style="color:#ae81ff">\\&lt;/span>&lt;span style="color:#e6db74">ZXIN&lt;/span>&lt;span style="color:#ae81ff">\\&lt;/span>&lt;span style="color:#e6db74">Desktop&lt;/span>&lt;span style="color:#ae81ff">\\&lt;/span>&lt;span style="color:#e6db74">cv&lt;/span>&lt;span style="color:#ae81ff">\\&lt;/span>&lt;span style="color:#e6db74">001.png&amp;#34;&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> imshow(&lt;span style="color:#e6db74">&amp;#34;001&amp;#34;&lt;/span>, img);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> waitKey(&lt;span style="color:#ae81ff">0&lt;/span>);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>OpenCV + Anaconda + VSCode 配置</title><link>https://kizx.github.io/post/opencv-+-anaconda-+-vscode-%E9%85%8D%E7%BD%AE/</link><pubDate>Wed, 11 Sep 2019 08:23:00 +0000</pubDate><guid>https://kizx.github.io/post/opencv-+-anaconda-+-vscode-%E9%85%8D%E7%BD%AE/</guid><description>&lt;p>我这个搭配有点奇怪，但是顺手最重要嘛，先收藏几个教程
&lt;a class="link" href="http://c.biancheng.net/opencv/" target="_blank" rel="noopener"
>OpenCV教程&lt;/a>&lt;/p>
&lt;ol>
&lt;li>
&lt;p>下载安装OpenCV
&lt;a class="link" href="https://opencv.org/releases/" target="_blank" rel="noopener"
>https://opencv.org/releases/&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>下载安装Anaconda
&lt;a class="link" href="https://www.anaconda.com/distribution/" target="_blank" rel="noopener"
>https://www.anaconda.com/distribution/&lt;/a>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>配置文件
如果都是默认安装路径的话，将&lt;code>C:\opencv\build\python\cv2\python-3.7\cv2.cp37-win_amd64.pyd&lt;/code>复制到&lt;code>C:\Users\ZXIN\Anaconda3\Lib&lt;/code>目录下&lt;/p>
&lt;/li>
&lt;li>
&lt;p>新建测试文件
打开VSCode，将左下角Python运行环境切换到Anaconda的Python解释器，敲入一下测试代码：&lt;/p>
&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> cv2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>img &lt;span style="color:#f92672">=&lt;/span> cv2&lt;span style="color:#f92672">.&lt;/span>imread(&lt;span style="color:#e6db74">&amp;#34;001.png&amp;#34;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cv2&lt;span style="color:#f92672">.&lt;/span>imshow(&lt;span style="color:#e6db74">&amp;#34;Image&amp;#34;&lt;/span>, img)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cv2&lt;span style="color:#f92672">.&lt;/span>waitKey(&lt;span style="color:#ae81ff">0&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cv2&lt;span style="color:#f92672">.&lt;/span>destroyAllWindows()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>