from email.mime import image
import imghdr
from turtle import title
import cv2
import matplotlib.pyplot as plt
import numpy as np
def cv_show(img,name):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
img=cv2.imread('lena.jpg') # 读取图片
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 转换为灰度图
ret,thresh=cv2.threshold(gray,127,255,cv2.THRESH_BINARY) # 对图片进行二值化 参数为阈值 图片大于阈值的像素点设置为255 小于阈值的像素点设置为0
cv_show(thresh,'after_threshold')
contours,bierarchy=cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE) # 轮廓检测 contours是轮廓的坐标 bierarchy是轮廓的结构 retr_tree是检测所有轮廓 chain_approx_none是检测所有轮廓
draw_img=img.copy()
res=cv2.drawContours(draw_img,contours,-1,(0,0,255),2) # 参数为输入图像 轮廓 填充颜色 线宽 -1表示填充所有轮廓 参数为输出图像
cv_show(res,'after_drawContours')
#保存
cv2.imwrite('lena_contours.jpg',res)
![](https://i-blog.csdnimg.cn/blog_migrate/989be19df783cad34af4ae83c627a4cf.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/5877970cdb3869551252bada01c80253.jpeg)