python OpenCV 寬度測量


機器視覺第六次實驗

一、實驗目的

通過OpenCV第六次進行實驗,對圖片進行寬度測量。

二、實驗內容

對圖片進行寬度測量。

三、實驗過程

我使用的是python語言+openCV對圖片進行寬度測量的功能。

1)讀取圖片

使用imread()函數讀取圖片,使用imshow()函數顯示圖片,waitKey()函數含義為按下任意鍵繼續;

代碼實例:

img = cv2.imread("img1.png")

cv2.imshow("img",img)

cv2.waitKey(0)

3.1讀取的圖片

2)截取測量區域

實例代碼:

#截取目標區域

recimg = img[80:236, 120:238]

cv2.imshow("img",recimg)

cv2.waitKey()

 

3.2截取的測量區域

3)二值化處理

使用threshold()函數進行圖片反色:

實例代碼:

#二值化處理

ret, th = cv2.threshold(recimg, 80, 255, cv2.THRESH_BINARY_INV)

cv2.imshow("img",th)

cv2.waitKey()

 

 

3.3二值化處理圖

4)邊緣檢測、圖像反色

輸入的代碼:

# 邊緣檢測、圖片反色

img1 = cv2.Canny(recimg, 100, 200)

img1 = 255 - cv2.cvtColor(img1, cv2.COLOR_BGR2RGB)

img2 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)

img2 = cv2.cvtColor(255 - th, cv2.COLOR_RGB2GRAY)

cv2.imshow("img",img2)

cv2.waitKey()

 

3.4反色后得到的圖片

5)邊緣檢測,框出物體的輪廓

實例代碼:

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

cnt = contours[0]

x, y, w, h = cv2.boundingRect(cnt)

6)繪制直線

實例代碼:

# 繪制直線

cv2.line(img1, (x, y), (x + w, y), (0,255,0), 3, 5)

cv2.line(img1, (x, y+h), (x + w, y+h), (0, 255, 0), 3, 5)

img[80:236, 120:238] = img1

 

7)圖片上添加寬度大小

實例代碼:

cv2.putText(img,'width:'+str(w),(10,30),cv2.FONT_HERSHEY_COMPLEX,1,(0,0,255),1)

 

3.5寬度測量圖

 

四、實驗中的錯誤

1)寬度測量的值需要寫入圖片,開始代碼如下:

cv2.putText(img,'width:'+str(w),(10,30),font,1,(0,0,255),1)一直報如下錯:

 

4.1寫入文字報錯

解決方案:將font 修改為以下代碼:cv2.FONT_HERSHEY_COMPLEX

4.2解決填入寬度問題

2)我們需要一步步實驗在圖片上的最佳位置填入文字和寬度。

五、實驗總結

學習了OpenCV的寬度測量,遇到了作業問題自己解決了,鍛煉了自己的能力。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM