python - 如何使用Python和openCV合并同一物体的轮廓?
问题描述
我使用了名为 cv2.findContours() 的函数来绘制轮廓,但是有些地方无法识别,这使得轮廓不连续。这是我的代码和结果。如果有人能教我如何合并同一物体的轮廓,非常感谢?
import numpy as np
import os
import cv2
image = cv2.imread("/home/rafael/Desktop/2.jpg")
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower = np.array([50, 10, 10])
upper = np.array([120, 255, 255])
mask = cv2.inRange(hsv, lower, upper)
res = cv2.bitwise_and(image, image, mask = mask)
kernel = np.ones((5, 5), np.uint8)
d_im = cv2.dilate(mask, kernel, iterations = 1)
e_im = cv2.erode(d_im, kernel, iterations = 1)
src, contours, hierarchy = cv2.findContours(e_im, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
temp = []
tmp = []
num = 0
for i in range(len(contours)):
if len(contours[i]) < 35:
temp.append(i)
for i in temp:
del contours[i - num]
num = num + 1
cv2.drawContours(image, contours, -1, (0, 0, 255), 2)
cv2.imwrite('/home/rafael/Desktop/13.jpg', image)
结果
完整的图片
解决方案
推荐阅读
- json - 将超类 json 反序列化为子类对象
- css - 为什么在 CSS 样式中按钮和链接的样式相同但类型呈现不同?
- jmeter - 使用 jmeter 对 100 个新用户同时订购产品进行自动化负载测试
- vue.js - IE11 SCRIPT1002 语法错误与 main.js babel 和 webpack 中的 =>
- sql-server - 如果求和值全部为 null,如何使 SQL Server SUM 返回 null
- r - ggplot() 没有预期的数字
- python-3.x - 是否可以从 PySpark Dataframe 轻松创建 Kudu 表?
- java - 如何在 Java 中运行具有策略权限的小程序以读取 MAC 地址
- javascript - 完整日历,当前月份有效
- google-tag-manager - 产品视图数据层 - 为什么它有一个列表视图?