• OpenCv-Python 图像处理基本操作


    1. 图片加载、显示和保存

    import cv2
    
    img = cv2.imread("01.jpg")
    imgGrey = cv2.imread("01.jpg",0)
    cv2.imshow("img",img)
    cv2.imshow("imgGrey",imgGrey)
    cv2.waitKey()
    cv2.imwrite("Copy.jpg",img)


    2. 图像显示窗口创建与销毁


    cv2.namedWindow(窗口名,属性) 创建一个窗口

    属性—指定窗口大小模式: 

    cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
    cv2.WINDOW_NORMAL:窗口大小可调整
    cv2.destoryAllWindows(窗口名) 删除任何建立的窗口


    import cv2
    
    img = cv2.imread("01.jpg")
    
    cv2.namedWindow("img",cv2.WINDOW_NORMAL)
    cv2.imshow("img",img)
    cv2.waitKey()
    cv2.destroyAllWindows()
    


    3. 图片宽、高、通道数获取


    img.shape 返回图像高(图像矩阵的行数)、宽(图像矩阵的列数)和通道数3个属性组成的元组,若图像是非彩色图,则只返回高和宽组成的元组。


    import cv2
    
    img = cv2.imread("01.jpg")
    imgGrey = cv2.imread("01.jpg",0)
    
    sp1 = img.shape
    sp2 = imgGrey.shape
    
    print sp1
    print sp2


    4. 图像像素数目和图像数据类型获取


    图像矩阵img的size属性和dtype分别对应图像的像素总数目和图像数据类型。一般情况下,图像的数据类型是uint8。


    import cv2
    
    img = cv2.imread("01.jpg")
    
    imgSize = img.size
    print imgSize
    
    ty = img.dtype
    print ty

    5. 生成指定大小的空图像


    使用numpy.zeros()函数生成指定大小的空图像


    import cv2
    import numpy as np
    
    img = cv2.imread("01.jpg")
    imgZero = np.zeros(img.shape,np.uint8)
    
    imgFix = np.zeros((300,500,3),np.uint8)
    # imgFix = np.zeros((300,500),np.uint8)
    
    cv2.imshow("img",img)
    cv2.imshow("imgZero",imgZero)
    cv2.imshow("imgFix",imgFix)
    cv2.waitKey()


    6. 访问和操作图像像素


    OpenCV中图像矩阵的顺序是B、G、R。可以直接通过坐标位置访问和操作图像像素。


    import cv2
    
    img = cv2.imread("01.jpg")
    
    numb = img[50,100]
    print numb
    
    img[50,100] = (0,0,255)
    cv2.imshow("img",img)
    cv2.waitKey()


    分开访问图像某一通道像素值也炒鸡方便:

    import cv2
    
    img = cv2.imread("01.jpg")
    
    img[0:100,100:200,0] = 255
    img[100:200,200:300,1] = 255
    img[200:300,300:400,2] = 255
    
    cv2.imshow("img",img)
    cv2.waitKey()


    嗯,不得不说Python是一个很神奇的存在。

    Python中,更改图像某一矩形区域的像素值也很方便:

    import cv2
    
    img = cv2.imread("01.jpg")
    
    img[0:50,1:100] = (0,0,255)
    
    cv2.imshow("img",img)
    cv2.waitKey()


    7. 图像三通道分离和合并


    分离图像通道可以使用cv2中的split函数,合并使用merge函数。

    import cv2
    
    img = cv2.imread("01.jpg")
    
    b , g , r = cv2.split(img)
    
    # b = cv2.split(img)[0]
    # g = cv2.split(img)[1]
    # r = cv2.split(img)[2]
    
    merged = cv2.merge([b,g,r])
    
    cv2.imshow("Blue",b)
    cv2.imshow("Green",g)
    cv2.imshow("Red",r)
    
    cv2.imshow("Merged",merged)
    cv2.waitKey()
    


    8. 在图像上输出文字


    使用putText函数在图片上输出文字,函数原型:
    putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
    • img: 图像
    • text:要输出的文本
    • org: 文字的起点坐标
    • fontFace: 字体
    • fontScale: 字体大小
    • color: 字体颜色
    • thickness: 字图加粗


    import cv2
    
    img = cv2.imread("01.jpg")
    
    cv2.putText(img,"Print some text to img",(100,100),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255))
    
    cv2.imshow("img",img)
    cv2.waitKey()
    


    9. 图像缩放


    缩放使用cv2.resize()函数,resize函数里的size第一个是宽(列),第二个是高(行)。


    import cv2
    
    img = cv2.imread("01.jpg")
    cv2.imshow("img",img)
    
    imgg = cv2.resize(img,(300,100))
    
    cv2.imshow("imgg",imgg)
    
    cv2.waitKey()

  • 相关阅读:
    centos5.8下用shell脚本监控服务器
    linux下IPTABLES配置详解
    centos设置计划任务(cron)
    32位CentOS系统安装kernel-PAE支持4g以上内存
    Excel同时打开多个独立的窗口
    yum安装LAMP
    多字段指定不同方向排序
    MySQL基础
    Python 网络编程
    Python 并发编程
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411779.html
Copyright © 2020-2023  润新知