python - Opencv在图像上查找轮廓
问题描述
我编写了一个检测图像书籍的代码。第一步是找到图像上的轮廓,但我对一些书有疑问。有时我无法正确检测轮廓(一本书是一个矩形,所以只需找到 4 个轮廓)因为线条没有正确指定,并且我有间隙击败它们,如图所示。有没有办法扩展检测到的边缘?
这是我的代码:
imgg = cv2.imread('\book.jpg')
gray = cv2.cvtColor(imgg, cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray, 11, 17, 17)
edged = cv2.Canny(gray , 10, 250)
(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
total = 0
#binary = cv2.bitwise_not(gray)
for c in cnts:
area = cv2.contourArea(c)
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.03 * peri, True)
if (len(approx) == 4) and (area > 100000):
cv2.drawContours(imgg, [approx], -1, (0, 255, 0), 4)
cv2.imshow('image',imgg)
cv2.waitKey(0)
cv2.destroyAllWindows()
解决方案
推荐阅读
- makefile - 制作排序内置函数
- spring - 如何在实体的架构属性中引用属性值?
- angular - 同步进行可观察的“运行”
- jira - Jira 迁移问题
- java - JAXB 非法注释异常
- entity-framework-6 - 实体框架 6,非主键列上 1 到 0..1 关系的流畅映射
- javascript - 为什么 515236034100068353 在 JavaScript 中等于 515236034100068350?
- r - 从 na.locf() 向填充的 NA 添加增量字母
- java - 基于 JSOUP 的应用程序的 JXL 更改列
- r - 将数据子集化并将这些数据写入单独的 Excel 模板的 For 循环