Python3+Opencv3 答題卡識別

參考:https://my.oschina.net/DDigimon/blog/1236298?tdsourcetag=s_pctim_aiomsg

 

 

小計:

1)cv2.Canny():

 cv2.Canny()第一個參數是輸入圖像,第二和第三個分別是minVal和maxVal。minVal和maxVal。當圖像的灰度梯度高於maxVal時被認爲是真的邊界,那些低於minVal的邊界會被拋棄。如果介於兩者之間的話,就要看這個點是否與某個被確定爲真正的邊界點相連,如果是就認爲它也是邊界點,如果不是就拋棄。

可參考博文:https://blog.csdn.net/sunny2038/article/details/9202641

2)cv2.findContours()函數:

對於opencv2和opencv3這個函數的返回參數個數是不同的,OpenCV2版本該函數返回兩個參數參考博文:https://blog.csdn.net/gaoranfighting/article/details/34877549

對於opencv3,返回三個參數,參考博文:https://blog.csdn.net/caicai2526/article/details/79637630

3) cv2.drawContours()函數:

可參考:https://blog.csdn.net/sunny2038/article/details/12889059

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset ]]]]])
  • 第一個參數是指明在哪幅圖像上繪製輪廓;
  • 第二個參數是輪廓本身,在Python中是一個list。
  • 第三個參數指定繪製輪廓list中的哪條輪廓,如果是-1,則繪製其中的所有輪廓。後面的參數很簡單。其中thickness表明輪廓線的寬度,如果是-1(cv2.FILLED),則爲填充模式。

eg:cv2.drawContours(dst,contours,-1,(0,0,255),3)   --------> 最後的 3表示線寬。

4)cv2.arcLength()函數: 

perimeter = cv2.arcLength(cnt,True)

輪廓周長也被稱爲弧長。可以使用函數cv2.arcLength()計算得到。這個函數的第二參數可以用來指定對象的形狀是閉合的(True),還是打開的(一條曲線)。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章