我正试着画出这张图的最大轮廓.但我的代码总是返回一个空白图像.因此,我非常感谢您帮助解决这个问题.

Original image enter image description here

以下是我的代码

import cv2
import numpy as np

img_1 = cv2.imread('img.png')
img_gray = cv2.cvtColor(img_1, cv2.COLOR_BGR2GRAY)

# get external contour
cnts = cv2.findContours(img_gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]

maxcontour = max(cnts, key=cv2.contourArea, default=0)


# draw white filled contour on black background
contour = np.zeros(img_1.shape, dtype=np.uint8)
contour.fill(0)
mask1 = cv2.drawContours(contour, [maxcontour], 0, 255, -1)
cv2.imshow('mask1.png', mask1)

提前谢谢你

推荐答案

查找轮廓搜索白色对象,因此只需反转图像 colored颜色 :

invert = cv2.bitwise_not(img_gray)
cnts = cv2.findContours(invert, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

Python相关问答推荐

DataFrame groupby函数从列返回数组而不是值

连接两个具有不同标题的收件箱

运行Python脚本时,用作命令行参数的SON文本

如何找到满足各组口罩条件的第一行?

从dict的列中分钟

计算天数

在不同的帧B中判断帧A中的子字符串,每个帧的大小不同

将标签移动到matplotlib饼图中楔形块的开始处

计算空值

统计numpy. ndarray中的项目列表出现次数的最快方法

使用tqdm的进度条

极柱内丢失类型信息""

启动线程时,Python键盘模块冻结/不工作

如何获取给定列中包含特定值的行号?

在MongoDB文档中仅返回数组字段

Pandas:使列中的列表大小与另一列中的列表大小相同

如何通过特定导入在类中执行Python代码

Pandas:新列,从列表中采样,基于列值

IpyWidget Select 框未打开

搜索结果未显示.我的URL选项卡显示:http://127.0.0.1:8000/search?";,而不是这个:";http://127.0.0.1:8000/search?q=name";