OpenCV轻松入门_面向python(第一章OpenCV入门)
1.1安装使用
在环境中使用pip install opencv-python
进行安装
安装后,在 Python 中输入
import cv2
print(cv2.__version__)
如果没有报错,并打印出版本号,则说明安装成功。
1.2图像处理基本操作
1.2.1 读取图像
读取图像函数语法格式如下:
retval = cv2.imread(filename[, flags])
参数说明:
- retval:返回值,其值是读取到的图像。如果未读取到图像,则返回
None
。 - filename:要读取的图像的完整文件名。
- flags:读取标记。常见取值有:
1
(默认值):以彩色图像加载(忽略 alpha 通道);0
:以灰度图像加载;-1
:加载图像,包括 alpha 通道。
import cv2
retval = cv2.imread('lena.jpg', -1)
print(retval)
1.2.2显示图像
namedWindow函数:
函数 cv2.namedWindow()
用来创建指定名称的窗口。
语法格式:
None = cv2.namedWindow( winname )
其中winname
是要创建的窗口的名称。
imshow函数:
函数 cv2.imshow()
用来显示图像,其语法格式为:
None = cv2.imshow( winname, mat )
- winname: 是窗口名称。
- mat: 是要显示的图像。
import cv2
lena = cv2.imread('lena.jpg', -1)
cv2.namedWindow("suo_long") #创建指定名称的窗口
cv2.imshow("suo_long",lena) #在suo_long窗口显示lena图像
cv2.waitKey(0) #是窗口保留不闪退,等待用户按下任意键退出
报错:“error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’”
说明当前要显示的图像是空的(None),这通常是由于在读取文件时没有找到图像文件造成的。一般来说,没有找到要读取的图像文件,可能是因为文件名错误;如果确认要读取的图像的完整文件名(路径名和文件名)没有错,那么往往是工作路径配置错误造成的。
waitKey函数:
函数 cv2.waitKey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。
retval = cv2.waitKey( [ delay ] )
- retval 表示返回值。如果没有按键被按下,则返回−1;如果有按键被按下,则返回该按键的 ASCII 码。
- delay 表示等待键盘触发的时间,单位是 ms。当该值是负数或者零时,表示无限等待。该值默认为 0。
在实际使用中,可以通过函数cv2.waitKey()
获取按下的按键,并针对不同的键做出不同的反应,从而实现交互功能。例如,如果按下 A 键,则关闭窗口;如果按下 B 键,则生成一个窗口副本。
import cv2
lena = cv2.imread('lena.jpg', -1)
cv2.namedWindow("suo_long") #创建指定名称的窗口
cv2.imshow("suo_long",lena) #在suo_long窗口显示lena图像
key = cv2.waitKey()
if key==ord('A'): #函数 ord(),用来获取字符的 ASCII 码值。cv2.namedWindow("PressA")cv2.imshow("PressA",lena)
elif key==ord('B'):cv2.namedWindow("PressB")cv2.imshow("PressB",lena)
#如果按下的是键盘上的 A 键,则新出现的窗口名称为 PressA
#如果按下的是键盘上的 B 键,则新出现的窗口名称为 PressB
destroyWindow函数:
函数 cv2.destroyWindow()
用来释放(销毁)指定窗口,其语法格式为:
None = cv2.destroyWindow( winname )
其中,winname
是窗口的名称。
destroyAllWindows函数:
函数 cv2.destroyAllWindows()
用来释放(销毁)所有窗口,其语法格式为:
None = cv2.destroyAllWindows( )
import cv2
lena = cv2.imread('lena.jpg', -1)
cv2.namedWindow("suo_long") #创建指定名称的窗口
cv2.imshow("suo_long",lena) #在suo_long窗口显示lena图像
cv2.waitKey()
cv2.destroyAllWindows("suo_long")#销毁suo_long窗口
1.2.3保存图像
imwrite函数:
函数 cv2.imwrite(),用来保存图像,该函数的语法格式为:
retval = cv2.imwrite( filename, img[, params] )
式中:
- retval 是返回值。如果保存成功,则返回逻辑值真(
True
);如果保存不成功,则返回逻辑值假(False
)。 - filename 是要保存的目标文件的完整路径名,包含文件扩展名。
- img 是被保存图像的名称。
- params 是保存类型参数,是可选的。
import cv2
lena = cv2.imread('lena.jpg', -1)
r = cv2.imwrite('suo.jpg',lena)
先读取当前目录下的图像 lena.jpg,生成它的一个副本图像,然后将该图像以名称 suo.jpg 存储到当前目录下。