环境:python3、opencv-python
函数:
1.图像的读取:cv2.imread(filename[,flags])
2.图像的修改:cv2.cvtColor(src,code[,dst[,dstCn]])
3.图像的查看:cv2.imshow(winname,mat)
4.图像的保存:cv2.imwrite(filename,img[,params])
参考自: 初识OpenCV3-图像的读、写、显、格式转化等
cv2.imread(filename[,flags])
参数 1:filename可以是文件名(带后缀:'img2.jpg'),也可以是路径+文件名(带后缀:'./image/img2.jpg')。如果是文件名则在当前文件夹下读取,即与运行的代码同级目录下;若是路径+文件名(相对路径或绝对路径),则在对应文件夹下读取。
参数 2:是标志位,要告诉函数应该如何读取这幅图片,即指定加载图片的颜色类型,默认加载类型是cv2.IMREAD_COLOR,读入BGR(在opencv中,其默认的颜色制式排列是BGR而非RGB)彩色图像。
cv2.cvtColor(src,mode[,dst[,dstCn]])
参数 1:要进行颜色空间转换的图像。
参数 2:从什么制式的图像转换成什么制式的图像。
颜色空间转换
cv2.imshow(winname,mat)
参数 1:展示图像的窗口的名字,可随意取。
参数 2:想要展示的图像。
cv2.imwrite(filename,img[,params])
参数 1:可以是文件名(带后缀:'img2.jpg'),也可以是路径+文件名(带后缀:'./image/img2.jpg')。如果是文件名则保存在当前文件夹下,即与运行的代码同级目录下;若是路径+文件名(相对路径或绝对路径),则保存在对应文件夹下。
参数 2:想要保存的图像。
import cv2
img = cv2.imread('./image/img2.jpg')#读入图像,返回一个数组
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#颜色空间变换,返回一个数组
cv2.imshow('gray_img',gray_img)#查看图片
cv2.waitKey()#等待用户按键触发
cv2.destroyAllWindows()#销毁窗口
cv2.imwrite('./image/gray_img2.jpg',gray_img)#保存图像到本地
原图:
img2.jpg
保存到本地的图:
gray_img2.jpg
waitKey()函数详解 :
1.1 waitKey()--这个函数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下 键,则接续等待(循环)
1.2 如下所示: while(1){ if(waitKey(100)==27)break; } 在这个程序中,我们告诉OpenCv等待用户触发事件,等待时间为100ms,如果在这个时间段内, 用户按下ESC(ASCII码为27),则跳出循环,否则,则继续循环
1.3 如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件
注意:python下cv.waitKey无响应原因
按下键的时候,焦点要落在窗口上,不能落在cmd窗口上。
另外,一般在imshow()后要使用waitKey(),给图像绘制留下时间,不然窗口会出现无响应情况,并且图像无法显示出来。
int waitKey(int delay=0)
延时delay = 0 函数则延时无限长,必须有键按下才继续执行。
延时delay > 0 函数返回值为按下的键的ASCII码值,超时则返回-1。
也就是说必须在有窗口显示的情况下,waitKey才有作用,否则无效。
比如调用cv.waitKey(0),如果此时没有活动的窗口,该函数立刻返回-1
cv2.waitKey()与cv2.destroyAllWindows()
在jupyter notebook 的实践结果:
cv2.waitKey():
1.传不传参数,没发现差异;
2.不加这行看不到图像;
3.阻塞后面代码执行,直到按键被按下或窗口关闭。
cv2.destroyAllWindows():不加这行会导致python崩溃。