zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411779.html
Copyright © 2011-2022 走看看