日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

opencv python tutorials_OpenCV-Python Tutorials 笔记(二)

發布時間:2023/12/2 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 opencv python tutorials_OpenCV-Python Tutorials 笔记(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV官方有一個面向python的文檔OpenCV-Python

Tutorials:

我根據此文檔進行了實踐學習,結合自己經驗簡單記錄一下筆記。(續)

4、Image Processing in

OpenCV

4.1Changing

Colorspaces

轉換顏色空間算是極其常用的操作了。不用說,cvtColor()。

相關參數:COLOR_BGR2GRAY、COLOR_BGR2HSV

等。注意這里不用 CV_BGR2GRAY了。

教程演示了一個用HSV顏色空間進行跟蹤的例子,挺有意思的。拷貝代碼:

cap = cv2.VideoCapture(0)

while(1):

# Take

each frame

_,

frame = cap.read()

#

Convert BGR to HSV

hsv =

cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

#

define range of blue color in HSV

lower_blue = np.array([110,50,50])

upper_blue = np.array([120,255,255])

#

Threshold the HSV image to get only blue colors

mask =

cv2.inRange(hsv, lower_blue, upper_blue)

#

Bitwise-AND mask and original image

res =

cv2.bitwise_and(frame,frame, mask= mask)

cv2.imshow('frame',frame)

cv2.imshow('mask',mask)

cv2.imshow('res',res)

k =

cv2.waitKey(5) & 0xFF

if k ==

27:

break

cv2.destroyAllWindows()

此外,講了一下如何求出所需的HSV值。用圖像編輯軟件或者打兩行代碼都行。

>>> green = np.uint8([[[0,255,0 ]]])

>>> hsv_green =

cv2.cvtColor(green,cv2.COLOR_BGR2HSV)

>>> print hsv_green

[[[ 60 255 255]]]

4.2?Geometric Transformations of

Images

圖像幾何變換,尺度、平移、旋轉、仿射、透視,等。需要相關的計算機視覺幾何學背景。

在推薦書目里果然看到了這本書:“Computer Vision: Algorithms and Applications”,

Richard Szeliski

尺度變換最簡單也最常用:resize()。自帶幾種算法。

Preferable interpolation methods are cv2.INTER_AREA for

shrinking and cv2.INTER_CUBIC (slow) & cv2.INTER_LINEAR for

zooming.

平移和旋轉都是仿射變換,需要確定變換矩陣。函數:cv2.warpAffine()

平移矩陣最簡單:

旋轉矩陣就要計算一下了:函數

getRotationMatrix2D()

OpenCV里為了可以確定旋轉后大小和中心位置,矩陣如下:

其中

綜合起來的時候呢,仿射變換可以由三點確定(因矩形變換后一定是平行四邊形)

只要你給出三個點在變換前后的坐標,就可以用函數getAffineTransform()計算2*3的仿射變換矩陣。

代碼:

img = cv2.imread('drawing.png')

rows,cols,ch = img.shape

pts1 = np.float32([[50,50],[200,50],[50,200]])

pts2 = np.float32([[10,100],[200,50],[100,250]])

M = cv2.getAffineTransform(pts1,pts2)

dst =

cv2.warpAffine(img,M,(cols,rows))

透視變換:

getPerspectiveTransform()、warpPerspective()

透視變換矩陣是3*3的。給出四個點的坐標(任意三點不共線)可以進行計算。代碼類似仿射的。

4.3?Image Thresholding

圖像閾值化:簡單閾值化、自適應閾值化(平均、高斯)、Ostu(最大類間差/大津法)

函數:cv2.threshold, cv2.adaptiveThreshold

一張圖說明簡單閾值化的五個參數,太有用了:

ostu法這個還真沒有用過:

ret,th =

cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

后邊講了實現原理,暫不仔細看了。

4.4?Smoothing Images

圖像平滑。

二維卷積(圖像濾波操作):cv2.filter2D(),低通濾波去噪模糊,高通濾波銳化勾邊。學過圖像處理的都知道。

平滑卷積核例如:kernel

= np.ones((5,5),np.float32)/25

又如著名的拉普拉斯算子:kernel

= np.array([[-1,-1,-1],[-1,8,-1],[-1,-1,-1]])

圖像模糊/平滑有幾個函數。blur、GaussianBlur、medianBlur、bilateralFilter等

4.5Morphological

Transformations

圖像形態學處理:膨脹、腐蝕、開運算、閉運算、黑帽運算、頂帽運算、形態學梯度運算。

函數:cv2.erode(), cv2.dilate(),

cv2.morphologyEx() 等

函數調用時要緊的是構建一個核。

img = cv2.imread('j.png',0)

kernel = np.ones((5,5),np.uint8)

erosion = cv2.erode(img,kernel,iterations = 1)

opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

也有專門構建核的函數:getStructuringElement,自帶矩形核、橢圓核、十字核三種。

4.6?Image Gradients

圖像梯度。函數:cv2.Sobel(), cv2.Scharr(), cv2.Laplacian()

注意Sobel函數要分別求XY然后相加。

這里教程特別說明了一下類型的問題。梯度運算時如果使用CV_8U會使得負數值化為零,丟失負向梯度。因此建議使用更高精度類型如CV_64F。

其余的不再贅述。有圖像處理知識的人看看就明白了。

4.7?Canny Edge Detection

Canny 邊緣檢測。講得比較詳細。原理沒細看,代碼極其簡單。

4.8?Image Pyramids

圖像金字塔。很多算法的基礎。函數:cv2.pyrUp(),

cv2.pyrDown()

得到的是高斯金字塔,向下是縮小,向上是放大。需要拉普拉斯金字塔時做差分就行了,沒有專門函數。

教程里給了個利用六級金字塔融合圖像的例子。(調試中發現圖片需要滿足邊長能整除64。當然啦。)

看代碼里邊用到了幾個python-Numpy函數沒見過,記錄一下:

BIF:zip,就是把2個數組糅在一起:

x=[1, 2, 3, 4, 5 ]

y=[6, 7, 8, 9, 10]

zip(x, y)就得到了

[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]

np.hstack,橫向連接數組。vstack縱向連接。

挺洋氣,以前沒想到過圖像還可以這樣融合誒,效果還不錯,當然就是模糊了點。

4.9?Contours in OpenCV

4.9.1?Contours : Getting Started

輪廓專題。輪廓在《學習OpenCV》第一版里可是用專門一章來講的,好像挺復雜,不過我并沒怎么看過。

函數cv2.findContours(), cv2.drawContours()

(未完待續)

總結

以上是生活随笔為你收集整理的opencv python tutorials_OpenCV-Python Tutorials 笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。