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(窗口名)刪除任何創建的窗口python

import cv2

img = cv2.imread("img",cv2.WINDOW_NORMAL)

cv2.imshow("img",img)
cv2.waitKey()
cv2.destoryAllWindows()

3.圖片寬、高、通道數獲取

img.shape 返回圖像高(圖像矩形的行數)、(圖像矩形的列數)和通道數3個屬性組成的元祖(png爲4通道),若圖像是非彩色圖,則只返回高和寬組成的元祖。windows

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

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

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

分開訪問圖像某一通道像素orm

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:\windows\fonts\SimSun,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()
相關文章
相關標籤/搜索