输入给opencv的是灰度图,并且是一个经过处理的二值化的灰度图,EXTERNAL这种mode更适合我想要的得到外部轮廓

 

opencv的threshold函数是阈值处理函数,返回的第二个参数就是处理后的图像,127就是阈值


代码:



import cv2  

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)
print len(contours)
cv2.drawContours(img,contours,-1,(0,0,255),3)
cv2.imwrite("EXTERNAL.png",img)
cv2.imshow("img", img)
cv2.waitKey(0)