python OpenCV之numpy陣列操作

2021-10-04 17:50:04 字數 2142 閱讀 5860

1.的表示與儲存

以矩陣的形式存在電腦裡,需要用到陣列操作來完成對影象的處理。

np.ones(size)

#可以建立任意維度的陣列,各個元素值均為1

23 np.zeros(size,dtype)

#同上,但各個元素值為0.預設元素型別為浮點數

使用示例:

img = np.zeros(

[256

,256,3

], np.uint8)

#建立長寬為256的,三通道(bgr),畫素大小為8位無符號整數

img[:,

:,0]

= np.ones(

[256

,256])

*255

#設定的顏色b通道為255,也就是藍色

cv.imshow(

"new image"

, img)

#單通道的灰度影象

img1 = np.ones(

[400

,400,1

], np.uint8)

img1 = img1 *

147 cv.imshow(

"new image"

, img1)

示例:

m1 = np.ones([30

,30], np.uint8)

#建立單通道的灰度圖形

m1.fill(12)

print

(m1)

cv.imshow(

"m1"

, m1)

#reshape注意size大小匹配 30*30=10*90

m2 = m1.reshape([10

,90])

print

(m2)

cv.imshow(

"m2"

, m2)

2.對畫素pixel的操作

主要有兩種形式:遍歷和api的方式。

def

access_pixels

(image):2

print

(image.shape)

3 height = image.shape[0]

4 width = image.shape[1]

5 channels = image.shape[2]

6print

("width : %s, height : %s, channels : %s"

%(width, height, channels))7

for i in

range

(height):8

for j in

range

(width):9

for k in

range

(channels)

:10 pv =

255- image[i, j, k]

11 image[i, j, k]

= pv

12 cv.imshow(

"pixels_demo"

, image)

1314

15def

inverse

(image):16

#和上乙個函式的for迴圈功能類似

17 dst = cv.bitwise_not(image)

18 cv.imshow(

"inverse demo"

, dst)

這時,你會發現使用api比迴圈遍歷快不少。

3.計算函式執行時間

t1 = cv.gettickcount(

)2 access_pixels(src)

#需要測試時間的函式

3 t2 = cv.gettickcount(

)4 time =

(t2-t1)

/cv.gettickfrequency()5

print

("time : %s ms"

%(time*

1000

))

Python OpenCV之模板匹配

模板匹配 模板匹配和卷積原理很像,模板在原影象上從原點開始滑動,計算模板與當前圖形被模板覆蓋的地方的差別程度,然後將每次計算的結果放入乙個矩陣,作為結果輸出。假如原圖形是a b大小,而模板是a b大小,則輸出結果的矩陣是 a a 1 b b 1 用於搜尋的輸入影象 template 用於匹配的模板 ...

python opencv之 Hough圓變換

內容來自opencv python tutorials 自己翻譯整理 目標 使用霍夫變換在影象中尋找圓 使用函式cv2.houghcircles 原理 圓形的表示式為 x xcenter 2 y ycenter 2 r2 x xcenter 2 y ycenter 2 r2,乙個圓環的確定需要三個引...

python OpenCV之對比度增強

對比度指的是一幅影象中明暗區域最亮的白和最暗的黑之間不同亮度層級的測量,差異範圍越大代表對比越大,差異範圍越小代表對比越小。對比度增強技術主要解決影象灰度級範圍較小造成的對比度低問題,目的是將影象的灰度級放大到指定的程度,使影象中的細節看起來更加清晰。概念 灰度直方圖是影象灰度級的函式,用來描述每個...