1. 程式人生 > 其它 >OPenCV基本操作

OPenCV基本操作

1.影象的IO操作:

影象的讀取,輸出和顯示

'''先匯入import numpy as np
再匯入import cv2 as cv
最後匯入import matplotlib.pyplot as plt
'''
img1 = cv.imread('kzf.jpg',1)#讀取影象
plt.imshow(img1)
plt.show()#顯示影象
plt.imwrite('picture.jpg',img1)#將img1儲存在picture.jpg中

2.繪製集合影象,有影象的建立,直線,圓形,矩形,新增文字文字

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt #1)建立影象大小 img = np.zeros((長,寬,線條寬度),np.uint8)#資料型別轉換為整型 img = np.zeros((512,512,5)條寬度),np.uint8) #繪製直線 cv.line(img,(左上角座標),(右下標座標),(顏色),線條寬度) cv.line(img,(0,0),(511,511),(255,0,0),5) #繪製圓形 cv.circle(img,(圓心座標),半徑長度,(顏色),線條寬度) cvcircle(img,(100,100),50),(0,255,0),5) #繪製矩形 cv.rectangle(img,(左上角座標),(右下標座標),(顏色),線條寬度) cv.rectangle(img,(0,0),(
511,511),(0,0,255),5) #新增文字 cv.putText(img.新增字串,字型型別,字型大小,顏色,線條寬度) cv.putText(img, "hello",(100,100),cv.FONT_HERSHEY_COMPLEX,4,(255,255,255),5)

3.獲取影象的畫素點

import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
img = cv.imread('kzf.jpg',1)
px = img[100,100]#獲取影象的某個畫素點值
blue = img[100,100,0]#獲取藍色強度通道畫素值
img[100,100] = [255,255,255]#修改畫素值

4.獲取影象的屬性

1)獲取影象的形狀:img.shape

2)獲取影象的大小:img.size

3)獲取影象的資料型別:img.dtype

5.影象的拆分和合並

1)影象的拆分

b,g,r = cv.split(img)

2)通道合併

img = cv.merge(b,g,r)

6.色彩空間轉換(常用的有兩種)

1)cv.COLOR_BGR2GRAY:BGR<-->GRAY
gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
plt.imshow(img,cmap = plt.cm.gray)
2)cv.COLOR_BGR2HSV:BGR<-->HSV
hsv = cv.cvtColor(img,cv.COLOR_BGR2HSV)
plt.imshow(hsv)

7.影象的加法和混合

1)注意:不管是影象的加法還是混合,必須影象的大小相同
import  numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
img1 = cv.imread('kzf1.jpg',1)
plt.imshow(img1)
plt.show()
img2 = cv.imread('kzf2.jpg',1)
plt.imshow(img2)
plt.show()
兩種形式相加:
第一種是OpenCV的cv.add()函式#飽和運算250+10 = 260輸出255
img3 = cv.add(img1,img2)
plt.imshow(img3)
plt.show()
第二種直接+直接相加#取模運算,250+10 = 160%256 = 4
img4 = img1+img2
plt.imshow(img4)
plt.show()
影象的混合通過cv.Weighted()函式
img5 = cv.Weighted(img1,0.3,img2,0.7)