opencv approxPolyDP使用


代碼:

import cv2
import numpy as np

# img = cv2.imread('/home/sensetime/edgeBoxes-Cpp-version/output/img/000021_10.png', -1) 
# contours,hierarchy = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
img = cv2.imread('/home/sensetime/edgeBoxes-Cpp-version/output/img/000021_10.png')  
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  
contours, hierarchy = cv2.findContours(binary,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) 


length = len(contours)
print length
for i in range(length):
    cnt = contours[i]
    epsilon = 0.00001 * cv2.arcLength(cnt,True)
    approx = cv2.approxPolyDP(cnt, epsilon, True)
    # cv2.drawContours(img, approx, -1, (0, 0, 255), 3)
    cv2.polylines(img, [approx], True, (0, 0, 255), 2)
cv2.imshow("approx",img)
cv2.
cv2.waitKey(0)

https://www.jianshu.com/p/d53bdfb1051f

代碼里使用drawContours只能畫出那些點,不能連成線

import numpy下面注釋的兩行是直接讀取灰度圖,然后用findContours函數,這樣會報錯誤,實際上,findContours函數傳入的是一個二值圖,但沒經過處理的灰度圖里面的值很多

epsilon這個參數表示的是精度,越小精度越高,因為表示的意思是是原始曲線與近似曲線之間的最大距離


免責聲明!

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



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