赞
踩
OpenCV Python是一个用于解决计算机视觉问题的Python库,是用基于C++实现的OpenCV构成的Python包。OpenCV Python和Numpy兼容,数据都被转换成Numpy数据结构,这使得OpenCV更容易与其它库(如SciPy和Matplotlib)集成。
使用OpenCV可以利用里面的函数在窗口进行图像的显示,涉及到的主要函数有三种:
(1)imshow()函数
imshow()函数是在指定的窗口中显示图像,窗口自动调整为图像大小。语法格式为imshow(string winName, Array InputData),其中,参数winName 是窗口名称,参数
InputData 为输入的图像。如果创建多个窗口,则各窗口需要具有不同的窗口名称。
(2)destroyAllWindows()与DestroyWindow (string winName)
这两个函数都可以卸载窗口,区别在于,函数destroyAllWindows()卸载全部窗口,而函数 DestroyWindow()卸载由参数winName 指定的窗口。
(3)waitkey(int delay =0)
函数 waitKey()等待用户按键,其参数delay是延迟的时间,单位为ms。在等待时间内如果检测到键盘动作,则返回按键的ASCII码,如果没有按下任何键,则返回-1。参数 delay 默认为0,即一直等待键盘输人。
在使用OpenCV时有cv和cv2两个版本,这两个版本都提供了对图片进行读、写和显示的功能。cv对应的函数是LoadImage()、ShowImage()和SaveImage()函数;cv2对应的函数是imread()、imwrite()和imshow()函数,下面以cv2版本为例介绍其中包含的常见函数。
(1)图像的基本读写操作
基本图像处理的函数包括imread()、imwrite()、split()、merge()等。图像读取函数imread()能加载图像文件并返回图像矩阵,如果无法读取图像,将返回一个空矩阵,imread()函数支持bitmap位图、JEPG文件、png图形等各种常见的图形图像格式。
imread()函数的基本格式如下:
imread(const String &filename, int flags)
其中filename表示文件名,flgs为图像色彩模式,默认为IMREAD_COLOR(值为1,BGR图像),其他常见取值如下表所示:
Mode值 | 说明 |
---|---|
IMREAD_UNCHANGED | 值为-1,按原样返回读取的图像,带有alpha通道(R,G,B,A 四个通道) |
IMREAD_GRAYSCALE | 值为0,将图像转换成单通道灰度图 |
IMREAD_COLOR | 值为1,将图像转换为3通道BGR彩色图像,不带alpha通道 |
IMREAD_REDUCED_GRAYSCALE_2 | 值为16,将图像转换成单通道灰度图像,并且图像尺寸减小1/2 |
IMREAD_REDUCED_COLOR_2 | 值为17,将图像转换成3通道BGR彩色图像,并且图像尺寸减小1/2 |
IMREAD_LOAD_GDAL | 值为8,使用gdal驱动程序加载图像 |
图像读取与保存实例:
使用cv2读取图像,将图像转换为灰度图显示并保存。
import cv2
img = cv2.imread('img.jpg',0) #转变为灰度图
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: #按Esc键直接退出
cv2.destroyAllWindows()
elif k == ord('s'): # 按's'键先保存灰度图,再退出
cv2.imwrite('result.png',img)
cv2.destroyAllWindows()
(2)图像的通道拆分操作
图像通常由多个通道组成,使用cv2的merge()和split()函数可以对图像的通道进行拆分与组合,例如将图像拆分为三个通道,然后将每个通道单独合成新的图像并保存。
拆分实例:
import numpy as np
import cv2
img = cv2.imread('img.jpg') #BGR图像模式
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 13:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。