• 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() 
    
  • 相关阅读:
    修改MFC标题栏上的图标
    【转】子窗口刷新父窗口的问题
    水晶报表添加引用
    【转】MetadataType的使用,MVC的Model层数据验证
    poj 1556 The Doors 线段相交判断+最短路
    poj 1269 Intersecting Lines 求直线交点 判断直线平行共线
    string 函数操作
    poj 1066 Treasure Hunt 线段相交判断
    poj 1410 Intersection 线段相交判断
    poj 3347 Kadj Squares 扩大数据化整数
  • 原文地址:https://www.cnblogs.com/gmhappy/p/11864000.html
Copyright © 2020-2023  润新知