opencv中文文档

opencv中文文档


图像处理入门

<h1>目标</h1> <ul> <li>在这里,您将学习如何读取图像,如何显示它,以及如何将其保存回来</li> <li>您将学习以下函数:cv.imread()、cv.imshow()、cv.imwrite()</li> <li>另外,您还将学习如何使用Matplotlib显示图像</li> </ul> <h1>使用OpenCV</h1> <h2>读取一个图像</h2> <p>使用函数cv.imread()读取图像。图像应该在工作目录中,或者应该给出图像的完整路径。</p> <p>第二个参数是一个指定图像读取方式的标志。</p> <ul> <li>cv.IMREAD_COLOR : 加载彩色图像。任何图像的透明度都将被忽略。它是默认标志.</li> <li>cv.IMREAD_GRAYSCALE : 以灰度模式加载图像</li> <li>cv.IMREAD_UNCHANGED : 加载图像,包括alpha通道</li> </ul> <h4>注意:</h4> <pre><code>您可以分别传递整数1、0或-1,而不是这三个标志。</code></pre> <p>请参阅以下代码:</p> <pre><code class="language-python">import numpy as np import cv2 as cv # Load an color image in grayscale img = cv.imread('messi5.jpg',0)</code></pre> <h4>警告</h4> <pre><code>即使图像路径是错误的,它也不会抛出任何错误,但是print(img)会给你返回None</code></pre> <h2>展示一个图像</h2> <p>使用函数cv.imshow()在窗口中显示图像。窗口自动适应图像大小。</p> <p>第一个参数是一个窗口名,它是一个字符串。第二个参数是图像。您可以创建任意多的窗口,但是使用不同的窗口名称。</p> <pre><code class="language-python">cv.imshow('image',img) cv.waitKey(0) cv.destroyAllWindows()</code></pre> <p>windows的截图如下(在Fedora-Gnome机器中):</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/f3b84122acd6acf049c23ba349b65f46?showdoc=.jpg" alt="" /></p> <p>waitkey()是一个键盘绑定函数。它的参数是以毫秒为单位的时间。函数为任何键盘事件等待指定的毫秒。如果你在这段时间内按下任何键,程序就会继续。如果传递0,它将无限期地等待击键。它也可以设置为检测特定的按键敲击,例如:如果按下a键等,我们将在下面讨论。</p> <h4>注意:</h4> <pre><code>除了绑定键盘事件外,该函数还处理许多其他GUI事件,因此必须使用它来实际显示图像。</code></pre> <p>destroyallwindows()简单地销毁我们创建的所有窗口。如果您想销毁任何特定的窗口,请使用函数cv.destroyWindow(),在该函数中,您将确切的窗口名称作为参数传递。</p> <h4>注意:</h4> <pre><code>在一种特殊情况下,您可以创建一个窗口并在稍后向其加载图像。在这种情况下,您可以指定窗口是否可调整大小。这是通过函数cv.namedWindow()完成的。默认情况下,该标志是cv.WINDOW_AUTOSIZE。但如果你指定flag为cv。WINDOW_NORMAL,可以调整窗口大小。这将有助于当图像太大的尺寸和添加跟踪栏到窗口。</code></pre> <p>请参阅以下代码:</p> <pre><code class="language-python">cv.namedWindow('image', cv.WINDOW_NORMAL) cv.imshow('image',img) cv.waitKey(0) cv.destroyAllWindows()</code></pre> <h2>写入/修改一个图像</h2> <p>使用函数cv.imwrite()保存图像。</p> <p>第一个参数是文件名,第二个参数是要保存的图像。</p> <pre><code class="language-python">cv.imwrite('messigray.png',img)</code></pre> <p>这将在工作目录中以PNG格式保存图像。</p> <h2>总结一下</h2> <p>下面的程序加载一个灰度图像,显示它,保存图像,如果你按's'和退出,或只是退出不保存,如果你按ESC键。</p> <pre><code class="language-python">import numpy as np import cv2 as cv img = cv.imread('messi5.jpg',0) cv.imshow('image',img) k = cv.waitKey(0) if k == 27: # wait for ESC key to exit cv.destroyAllWindows() elif k == ord('s'): # wait for 's' key to save and exit cv.imwrite('messigray.png',img) cv.destroyAllWindows()</code></pre> <h4>警告</h4> <pre><code>如果使用64位机器,则必须修改k = cv.waitKey(0)那行代码,如下所示:k = cv.waitKey(0) &amp; 0xFF</code></pre> <h2>使用Matplotlib</h2> <p>Matplotlib是一个用于Python的绘图库,它提供了多种绘图方法。您将在以后的文章中看到它们。在这里,您将学习如何使用Matplotlib显示图像。您可以缩放图像,保存它等使用Matplotlib。</p> <pre><code class="language-python">import numpy as np import cv2 as cv from matplotlib import pyplot as plt img = cv.imread('messi5.jpg',0) plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.show()</code></pre> <p>windows的屏幕截图如下:</p> <p><img src="https://www.showdoc.cc/server/api/common/visitfile/sign/6f8e5cff7fd9b772703f8094067b28ba?showdoc=.jpg" alt="" /></p> <h4>另请参阅:</h4> <p>Matplotlib中有很多绘图选项。更多细节请参考Matplotlib文档。有些,我们会在过程中看到。</p> <h4>警告</h4> <p>OpenCV加载的彩色图像处于BGR模式。但是Matplotlib以RGB模式显示。因此,如果使用OpenCV读取图像,那么Matplotlib中的彩色图像将无法正确显示。更多细节请看练习。</p> <h2>其它资源</h2> <p><a href="http://matplotlib.org/api/pyplot_api.html" title="Matplotlib Plotting Styles and Features">Matplotlib Plotting Styles and Features</a></p> <h2>练习题</h2> <p>在OpenCV中加载彩色图像并在Matplotlib中显示时,会遇到一些问题。阅读这篇讨论并理解它。</p>

页面列表

ITEM_HTML