gpt4 book ai didi

python - 如何将图像上的对象轮廓绘制到单独的图像

转载 作者:行者123 更新时间:2023-12-02 17:30:32 25 4
gpt4 key购买 nike

我正在研究拼图,这里的最后任务是识别拼图的边缘类型。

enter image description here

如上图所示,我有mange可以旋转并以相同 Angular 裁剪出作品的每个边缘。我的下一步是将边缘线分成单独的图像,如下图所示

enter image description here

然后用一种颜色填充线条的一侧,然后尝试对其进行处理,以确定其是哪种类型的边缘。

我暂时没有找到将边缘线与图像分开的正确方法。

我的方法:
一种方法是逐像素扫描,并找到旁边有一个修女黑色像素的黑色像素。这是我可以实现的代码。但感觉像是一种原始且耗时的方法。

因此,如果有的话,您可以提供任何帮助或想法,或者以任何完全不同的方式来检测凹陷和隆起。

提前致谢..

最佳答案

首先将彩色图像转换为灰度图像。然后应用一个阈值,例如零,以获得二进制图像。如果有孔,您可能必须使用形态学运算来进一步处理二进制图像。然后找到该图像的轮廓并将其绘制为新图像。

rgb

binary

cont

下面使用opencv 4.0.1中的python 2.7给出了一个简单的代码。

bgr = cv2.imread('puzzle.png')
gray = cv2.cvtColor(bgr, cv2.COLOR_BGR2GRAY)
_, roi = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)
cv2.imwrite('/home/dhanushka/stack/roi.png', roi)
cont = cv2.findContours(roi, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
output = np.zeros(gray.shape, dtype=np.uint8)
cv2.drawContours(output, cont[0], -1, (255, 255, 255))

# removing boundary
boundary = 255*np.ones(gray.shape, dtype=np.uint8)
boundary[1:boundary.shape[0]-1, 1:boundary.shape[1]-1] = 0

toremove = output & boundary
output = output ^ toremove

关于python - 如何将图像上的对象轮廓绘制到单独的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56069564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com