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(窗口名,屬性) 建立一個窗口python

屬性—指定窗口大小模式: ide

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。能夠直接經過座標位置訪問和操做圖像像素。ui


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()


分開訪問圖像某一通道像素值也炒雞方便:spa

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中,更改圖像某一矩形區域的像素值也很方便:code

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()
相關文章
相關標籤/搜索