快乐学习
前程无忧、中华英才非你莫属!

1-OpenCV-图像处理入门

一、OpenCV简介

OpenCV于1999年由Gary Bradsky在英特尔创立,第一个版本于2000年问世。随后Vadim Pisarevsky加入了Gary Bradsky,主要负责管理英特尔的俄罗斯软件OpenCV团队

OpenCV现在支持与计算机视觉和机器学习相关的众多算法,并且正在日益扩展。

OpenCV支持各种编程语言,如C ++,Python,Java等,可以在不同的系统平台上使用,包括Windows、Linux,OS X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在积极开发中。
OpenCV-Python是OpenCV的Python API,结合了OpenCV C++ API和Python语言的最佳特性。

如果你使用Python作为编写OpenCV的程序,你将要熟练使用Python 和Numpy.

二、图像处理入门

2.1 读取图像

使用cv.imread()函数用于读取图像,其中函数的第一个参数为要读取的图像名称,此图像应该处在Python代码文件的工作目录中,或者应给出完整的文件路径。第二个参数是一个标志,以下几种参数分别指定了应该读取图像的方式。

  • cv.IMREAD_COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。
  • cv.IMREAD_GRAYSCALE:以灰度模式加载图像。
  • cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。

注意:或者你可以简单的传递1、0或者-1来替代上面三个标志。
参考以下代码:

import numpy as np
import cv2 as cv
# Load an color image in grayscale
img = cv.imread('messi5.jpg',0)

注意:如果加载图像的路径有错误,它并不会报错,而是返回给你一个None值。

2.2 显示图像

使用cv.imshow()函数用于在窗口中显示图像,窗口会自动适合图像大小。
其中函数的第一个参数是窗口的名称,以字符串类型表示。第二个参数是要加载的图像。
你可以显示多个图像窗口,只要它们的窗口名称不同就可以。

参考以下代码:

cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()

cv.waitKey()是一个键盘事件函数,它的参数是以毫秒为单位的时间。该函数等待参数时间,如果时间之内有键盘事件触发则程序继续,如果函数参数设置为0,则无限时间的等待键盘事件触发。它也可以设置为检测指定按键的触发,比如等待按键a的触发,我们将在下面讨论。

注意:这个函数除了可以等待键盘事件的触发之外还可以处理很多其他的GUI事件,所以你必须把它放在显示图像函数之后。

cv.destroyAllWindow()函数用于关闭我们所创建的所有显示图像的窗口,如果想要关闭任何特定的窗口,请使用cv.destroyWindow()函数,其中把要关闭的窗口名称作为参数传递。

注意:一种特殊的情况是,你也可以先创建一个窗口,之后再加载图像。这种情况下你可以自行决定窗口的大小,你可以使用cv.nameWindow()函数进行窗口大小的调整。默认函数参数是cv.WINDOW_AUTOSIZE,你可以将其改成cv.WINDOW_NORMAL,这样你就可以自行调整窗口大小了。当图像尺寸太大或者需要添加轨迹条时,调整窗口大小将会非常有用。

参考以下代码:

cv.namedWindow('image', cv.WINDOW_NORMAL)
cv.imshow('image',img)
cv.waitKey(0)
cv.destroyAllWindows()

2.3 保存图像

使用cv.imwrite()函数用于保存图像。其中第一个函数是文件名,第二个函数是你要保存的图像。
参考一下代码:

cv.imwrite('messigray.png',img)

总结
下面的代码程序将加载灰度图像,显示图像,如果按's'并退出则保存图像,或者按ESC键直接退出而不保存。

参考一下代码:
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()

# 注意:如果你使用的是64位计算机,则必须将k = cv.waitKey(0)修改为:
# k = cv.waitKey(0) & 0xFF
打赏
赞(1) 打赏
未经允许不得转载:同乐学堂 » 1-OpenCV-图像处理入门

特别的技术,给特别的你!

联系QQ:1071235258QQ群:710045715

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

error: Sorry,暂时内容不可复制!