Opencv基础自学二十一(轮廓检测)

import cv2 as cv
import numpy as np


def contours_demo(image):#高斯滤波->灰度->二值->轮廓检测
	dst = cv.GaussianBlur(image, (3, 3), 0)  # 高斯
	gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)  # 变成灰度
	ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)  # 变成二值图像
	cv.imshow("binary image", binary)
	# binary = edge_demo(image)这个是方法三
	contours, heriachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)  # 输入图像,
	for i, contour in enumerate(contours):
		cv.drawContours(image, contours, i, (0, 0, 255), 2)  # 最后的参数2是只填充外围,-1是整个填充
		print(i)
	cv.imshow("detect contours", image)
'''
findContours
binary->输入图像
cv.RETR_EXTERNAL->表示只检测外轮廓,默认这个
cv.CHAIN_APPROX_SIMPLE)->缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息
'''

print("start")
src = cv.imread("D:/example/coins.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)

contours_demo(src)
cv.waitKey(0)

cv.destroyAllWindows()

原图效果

 

检测效果

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值