zoukankan      html  css  js  c++  java
  • python Opencv图像基础操作

    读取并显示图像

    如果读取图像首先要导入OpenCV包,方法为:
    import cv2
    读取并显示图像
    img = cv2.imread("C: est1.jpg")
    OpenCV目前支持读取bmp、jpg、png、tiff等常用格式。更详细的请参考OpenCV的参考文档。
    接着创建一个窗口
    cv2.namedWindow("Image")
    然后在窗口中显示图像
    cv2.imshow("Image", img)
    按键等待
    waitKey()

    这个函数是在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下 键,则接续等待(循环)

    如下所示:

    if cv2.waitKey(1) == ord('q'):
       break
    

    在这个程序中,我们告诉OpenCv等待用户触发事件,等待时间为1ms,如果在这个时间段内,用户按下ESC(ASCII码为27),则跳出循环;否则,则跳出循环

    如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件

    释放窗口
    cv2.destroyAllWindows()
    完整的程序为:

    import cv2   
    
    img = cv2.imread("C:\test1.jpg")   
    cv2.namedWindow("Image", 0) 
    cv2.resizeWindow("Image", 320, 240);  
    cv2.imshow("Image", img)   
    k = cv2.waitKey(0)
    
    if k == 27:
        cv2.destroyAllWindows() 
    

    创建/复制图像

    如果要创建图像

    img2 = img.copy();  
    

    如果不怕麻烦,还可以用cvtColor获得原图像的副本。

    img3 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
    #img3[...]=0  
    

    后面的img3[...]=0是将其转成空白的黑色图像。

    保存图像

    保存图像很简单,直接用cv2.imwrite即可。

    cv2.imwrite("test_0.jpg", img)
    

    第一个参数是保存的路径及文件名,第二个是图像矩阵。其中,imwrite()有个可选的第三个参数,如下:
    cv2.imwrite("test_1.jpg", img,[int(cv2.IMWRITE_JPEG_QUALITY), 5])
    cv2.imwrite("test_2.jpg", img,[int(cv2.IMWRITE_JPEG_QUALITY), 100])
    第三个参数针对特定的格式: 对于JPEG,其表示的是图像的质量,用0-100的整数表示,默认为95。 注意,cv2.IMWRITE_JPEG_QUALITY类型为Long,必须转换成int。
    下面是以不同质量存储的两幅图:
    在这里插入图片描述
    对于PNG,第三个参数表示的是压缩级别。cv2.IMWRITE_PNG_COMPRESSION,从0到9,压缩级别越高,图像尺寸越小。默认级别为3
    cv2.imwrite("test_3.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
    cv2.imwrite("test_4.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

    完整代码

    import cv2   
    import numpy as np  
      
    img = cv2.imread("C:\test1.jpg")  
    
    print(img.shape)
    
    cv2.namedWindow("Image", 0)
    cv2.resizeWindow("Image", 320, 240)
    cv2.imshow("Image", img) 
    
    img2 = img.copy()
    cv2.namedWindow("Image2", 0)
    cv2.resizeWindow("Image2", 320, 240)
    cv2.imshow("Image2", img2) 
    
    img3 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # img3[...]=0  
    cv2.namedWindow("Image3", 0)
    cv2.resizeWindow("Image3", 320, 240)
    cv2.imshow("Image3", img3)
    
    cv2.imwrite("test_1.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 5])
    cv2.imwrite("test_2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
    
    cv2.imwrite("test_3.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
    cv2.imwrite("test_4.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
    
    k = cv2.waitKey(0)
    
    if k == 27:
        cv2.destroyAllWindows() 
    
  • 相关阅读:
    iPhone将NSString转换编码集为gb2312或者gbk的方法
    iOS下微信语音播放之切换听筒和扬声器的方法解决方案
    苹果开发者各地区联系电话
    iOS开发中,应用内直接跳转到Appstore
    高亮显示UILabel中的子串
    UML
    All Classic Bluetooth profile for iPhone
    智能穿戴设备移动APP端与外设数据传输协议功能模块CMD&ACK表
    Mac 使用技巧分享
    git branch管理小结
  • 原文地址:https://www.cnblogs.com/gmhappy/p/11864000.html
Copyright © 2011-2022 走看看