作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究拼图,这里的最后任务是识别拼图的边缘类型。
如上图所示,我有mange可以旋转并以相同 Angular 裁剪出作品的每个边缘。我的下一步是将边缘线分成单独的图像,如下图所示
然后用一种颜色填充线条的一侧,然后尝试对其进行处理,以确定其是哪种类型的边缘。
我暂时没有找到将边缘线与图像分开的正确方法。
我的方法:
一种方法是逐像素扫描,并找到旁边有一个修女黑色像素的黑色像素。这是我可以实现的代码。但感觉像是一种原始且耗时的方法。
因此,如果有的话,您可以提供任何帮助或想法,或者以任何完全不同的方式来检测凹陷和隆起。
提前致谢..
最佳答案
首先将彩色图像转换为灰度图像。然后应用一个阈值,例如零,以获得二进制图像。如果有孔,您可能必须使用形态学运算来进一步处理二进制图像。然后找到该图像的轮廓并将其绘制为新图像。
下面使用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/
我是一名优秀的程序员,十分优秀!