美文网首页程序员
1.OpenCV-python:图像的读取、修改、查看、保存

1.OpenCV-python:图像的读取、修改、查看、保存

作者: loviky | 来源:发表于2019-03-16 21:06 被阅读0次

    环境: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

    摘自:OpenCV-Python学习之(一)waitKey()函数详解

    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崩溃。

    相关文章

      网友评论

        本文标题:1.OpenCV-python:图像的读取、修改、查看、保存

        本文链接:https://www.haomeiwen.com/subject/oqfsmqtx.html