import cv2
import numpy as np
#该图像显示效果是黑白的,但是实际上却是3个通道的彩色图像.
img = cv2.imread('./image/dog.png')
#变成单通道的黑白图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#二值化,注意有2个返回值,阈值和结果
ret, binary = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)
#cv2.imshow( 'img " , img)
# cv2.imshow( ' binary ' , binary)
#轮廓查找,新版本返回两个结果,轮廓和层级,老版本返回3个参数,图像,轮廓和层级
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
#打印轮廓
print(contours)
#绘制轮廓,注意,绘制轮廓会改变原图
#绘制轮廓会直接修改原图.
#如果想保持原图不变,建议copy一份
img_copy = img.copy ()
cv2.drawContours(img_copy,contours,-1,(0,0,255),2)
cv2.imshow('img', img)
cv2.imshow ('img_copy', img_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()