zoukankan      html  css  js  c++  java
  • Python openCV基础操作

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

    import cv2
    # 读取图片
    img = cv2.imread("img1.jpg")
    # 生成灰色图片
    imgGrey = cv2.imread("img1.jpg",0)
    # 展示原图
    cv2.imshow("img",img)
    # 展示灰色图片
    cv2.imshow("imgGrey",img)
    # 等待图片的关闭
    cv2.waitKey()
    # 保存图片
    cv2.imwrite("Copy.jpg",imgGrey)
    

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

    cv2.namedWindow(创空名,属性)创建一个窗口
    属性一般指定窗口大小模式:
    cv2.WINDOW_AUTOSIZE:根据图像大小自动创建大小
    cv2.WINDOW_NORMAL:窗口大小可调整
    cv2.destoryAllWindows(窗口名)删除任何建立的窗口

    import cv2
    
    img = cv2.imread("img",cv2.WINDOW_NORMAL)
    
    cv2.imshow("img",img)
    cv2.waitKey()
    cv2.destoryAllWindows()
    

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

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

    import cv2
    
    img = cv2.imread("1.jpg")
    imgGrey = cv2.imread("1.jpg",0)
    
    sp1 = img.shape
    sp2 = imgGrey.shape
    
    print(sp1)
    print(sp2)
    # =====输出======
    # (800,800,3)
    # (800,800)
    
    

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

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

    import cv2
    
    img = cv2.imread("1.jpg")
    
    imgSize = img.size
    print(imgSize)
    
    ty = img.dtype
    print(ty)
    # ====输出=====
    # 691200
    # uint8
    

    5生成指定大小的空图像

    生成指定大小的空图像

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

    6.生成透明图圆形色块

    cv2.circle(图片,圆心位置,圆半径,颜色,-1)

    import cv2
    import numpy as np
    
    imgZero = np.zeros((400),np.uint8)
    cv2.namedWindow('draw circles')
    cv2.circle(img,(200,200),200,(0,0,255,255),-1)
    cv2.imshow("imgGrey",img)
    cv2.waitKey()
    cv2.imwrite("Copy.png",img)
    

    7.访问和操作图像像素

    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
    

    更改图像某一矩形区域的图像值也很方便

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

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

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

    import cv2
    
    img = cv2.imread("01.jpg")
    
    b , g , r = cv2.split(img)
    
    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:字图加粗
    img = cv2.imread("01.jpg")
    
    cv2.putTtext(img,"Print some text to img",(100,100),cv2.FONT_HERSHEY_SIMPLEX,1,(0,0,255))
    
    cv2.imshow("img",img)
    cv2.waitKey()
    

    9.图像缩放

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

    10.图片灰度化处理

    from matplotlib import pyplot as plt
    import cv2
    form pylab import *
    
    #添加中文字体支持
    from matplotlib.font_manager import FontProperties
    fot = FontProperties(fname = r"c:windowsfontsSimSun,ttc",size = 14)
    
    # 载入图像
    im = cv2.imread("1.jpg")
    # 显示原始图像
    fig = plt.figure()
    subplot(121)
    plt.gray()
    im2 = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) # OpenCV采用BGR排序,需要转换一下
    imshow(im2)
    title(u'彩色图',fontproperties= font)
    axis('off')
    # 显示灰度化图像
    # 颜色空间转换
    
    gray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
    plt.subplot(122)
    plt.gray()
    imshow(gray)
    title(u"灰度图",fontproperties=font)
    axis('off')
    show()
    
  • 相关阅读:
    CentOS6.5系统服务
    Linux下查看文件内容时去掉空行和#开头的注释行
    sql去重复(RecordNum )
    bootstrap-fileinput使用
    javascript事件失效l
    vs2015里,发布OSGI.NET
    视频允许播放禁止下载
    zTree模糊查询人员姓名:getNodesByParamFuzzy
    OSGI.NET,请求因HTTP状态404 失败:Not Found
    异常
  • 原文地址:https://www.cnblogs.com/gongcheng-/p/11468207.html
Copyright © 2011-2022 走看看