opencv-python笔记1-图像处理基本操作
opencv-python笔记1-图像处理基本操作
- 读取图像
import cv2
"""读取图像 imread"""
cus = cv2.imread('C:\\8.png',-1)
#print(cus)#输出图像的部分像素值
imread参数设置-1是表示保持原格式不变,还有很多别的参数设置,(附在最后)
imread能够读取多种不同类型的图像。该函数有返回值,返回值是读取到的图像。还有注意,imread好像只支持全英文的文件名,如果出现中文可能读取不了。
- 显示图像
cv2.namedWindow('pra',0) #创建指定名称的窗口
cv2.imshow('pra',cus) #显示图像
key = cv2.waitKey(0) #imshow后面必须跟waitKey 不然图片会显示不出来
if key==ord('A'): #ord函数返回ASCLL码
cv2.imshow('p1',cus)
key = cv2.waitKey(0)
if key==ord('B'):
cv2.imshow('p2',cus)
key = cv2.waitKey(0)
每次调用imshow函数后面必须要跟一个waitKey(0),不然图片显示不出来。
waitKey函数用来等待按键:
retval = cv2,waitKey([delay])
1) retval表示返回值,没有按键返回-1; 如果有按键被按下,则返回该按键的ASCLL码。
2) delay表示等待键盘触发的时间,单位是ms。当该值是负值或0时无限等待,默认值0。如果是0,程序会一直等待,直到有按下键盘的事件发生,才会执行后续程序。如果参数是正数,则在这段时间内,程序等待按下键盘按键,如果超时了直接执行后面的语句。
python提供了函数 ord() 用来获取字符的ASCLL码值。
为什么要用这个namedWindow()呢,其实不用加这一行代码,程序也能正常显示图像。经过尝试,发现加上这个函数,有一个优势,可以*拖动箭头改变显示的图片的大小。如果直接imshow(),显示的图片就不能箭头调整大小。但是namedWindow()一定要把参数0带上,这样才能使用双箭头调整大小。
将上面的两个if代码更新一下,测试这个namedWindow()
if key==ord('A'):
cv2.namedWindow('p1',0)
cv2.imshow('p1',cus)
key = cv2.waitKey(0)
if key==ord('B'):
cv2.namedWindow('p2',0)
cv2.imshow('p2',cus)
key = cv2.waitKey(0)
#cv2.destroyWindow('p1')
cv2.destroyAllWindows()
这段代码最后使用了destroyWindow()函数,用来释放指定窗口。
- 保存图像
r = cv2.imwrite('C:\\Users\\24725\\Desktop\\new8.png',cus)#保存图像
retval = cv2.imwrite(filename, img, params)
1) 该函数有返回值,保存成功返回True
2) 需要提供目标文件的完整路径名或者相对路径
3) img是需要保存的图片对象
4) params是保存类型参数
--------附图imread参数设置(来自网络,非原创图,仅参考)