創作內容

1 GP

專題製作-找輪廓畫線

作者:OKHand│2020-06-18 15:44:29│巴幣:2│人氣:288
輪廓(contours)
輪廓,簡單說輪廓就是一些列點相連組成形狀、它們擁有同樣的顏色、輪廓發現在圖像的對象分析、對象檢測等方面是非常有用的工具,在OpenCV中使用輪廓發現相關函數時候要求輸入圖像是二值圖像,這樣便於輪廓提取、邊緣提取等操作。

cv2.imread(filename[, flags])
- flags 有3種不同讀取圖片的方法
  CV_LOAD_IMAGE_ANYDEPTH 如果有設置則當輸入具有相應的深度時返回16bit/32bit圖像,否則將轉換為8bite
  CV_LOAD_IMAGE_COLOR 如果有設置,將圖像轉為一種顏色也可使用-1(不變)或0(灰度)或1(顏色)來表示
  CV_LOAD_IMAGE_GRAYSCALE 如果有設置,將圖像轉為灰度圖像

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])
返回兩個值:contours:hierarchy,一個是輪廓本身,還有一個是每條輪廓對應的屬性
- image 輸入/輸出的二值圖像
- mode 返回輪廓的結構、有3種分別是
  cv2.RETR_List(檢測的輪廓不建立等級關係)、
  cv2.RETR_Tree(建立一個等級樹結構的輪廓)、
  cv2.RETR_External(只檢測外輪廓)
- method 輪廓點的編碼方式,基本是基於鏈式編碼,有3種分別是
  CV_CHAIN_APPROX_NONE 會儲存所有邊界的點  
  CV_CHAIN_APPROX_SIMPLE  它刪除了所有冗餘的點並壓縮輪廓,保留端點的點
  CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS
- contours 返回的輪廓集合
- hieracrchy 返回的輪廓層次關係
- offset 點是否有位移
※由於版本如果是使用(3.2.0.7)以上時cv2.findContours返回值變成3個
第一個引數是源影象、第二個引數是輪廓檢索模式,第三個引數是輪廓逼近方法
_,ctrs,hier=cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
  or
aa,ctrs,hier=cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

ret,out=cv2.threshold(image, thresh, max, method)
threshold只能處理灰階影像
- image 輸入影像
- thresh 參數為最小門檻值設定
- max 參數為最大門檻值設定
- method 參數為使用Threshold的演算類型,二化值有5種模式
  cv2.THRESH_BINARY(黑白二值)
  cv2.THRESH_BINARY_INV(黑白二值反轉)
  cv2.THRESH_TRUNC (得到的圖像為多像素值)
  cv2.THRESH_TOZERO (
將小於閾值的灰度值設為0,大於閾值的值保持不變。)
  cv2.THRESH_TOZERO_INV (
將大於閾值的灰度值設為0,小於閾值的值保持不變。)

cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])
- image 目標圖片
- contours 所有輸入的輪廓,每個輪廓都儲存為點向量
- contourIdx 指定要繪製輪廓的參數(list中的哪條輪廓),如果為負數,則會繪製所有輪廓
- thickness  繪製輪廓的線的粗細,如果為負數(ex:thickness=CV_FILLED ),則繪製輪廓內部(填充模式)
- linr Type 線路相連用於兩點相連用(可以參考line())
- hierarchy 有關階層,僅當你只想繪製一些輪廓時才需要使用(可以參考maxLevel)
- maxLevel 繪製輪廓有關
  如果為0,only the specified contour is drawn
  如過為1,the function draws the contour(s) and all the nested contours
  如果為2,he function draws the contours, all the nested contours, all the nested-to-nested contours 等等 ,僅當存在可用的hierarchy才要考慮此參數
- offset  可選用的輪廓偏移參數,將所繪製的輪廓移動到指定的(ex:offset=(dx,dy))

參考資料:
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4820546
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:#大4專題|#Python|#OpenCV|#可憐阿|#好累

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

1喜歡★az7899603 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:AIS3 心得... 後一篇:Pwn2Win andr...

追蹤私訊切換新版閱覽

作品資料夾

ilove487致一百光年外的你
【讀墨】2023台灣大眾小說人氣票選活動!!看更多我要大聲說昨天14:46


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】