Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用OpenCV获取拼图的单像素线轮廓_Opencv_Computer Vision - Fatal编程技术网

用OpenCV获取拼图的单像素线轮廓

用OpenCV获取拼图的单像素线轮廓,opencv,computer-vision,Opencv,Computer Vision,我试图从拼图的照片中自动提取所有拼图块的轮廓。以下是灰度输入图像: 到目前为止,通过获取局部标准偏差(11px框内的标准偏差),并使用opencv对结果应用5px框模糊,我已经能够获得一个更有用的图像,该图像随照明条件的变化较小。这给了我这样的信息: 从这里开始,我不知道该怎么做才能在这些片段之间找到一条像素线。为每一块画出大致的轮廓还不够好,因为我希望能够将图像分割成几块,并且能够独立地移动这些块,而这些块仍然完美地结合在一起 findContours的结果远远不够好 我在这里的理想输出是

我试图从拼图的照片中自动提取所有拼图块的轮廓。以下是灰度输入图像:

到目前为止,通过获取局部标准偏差(11px框内的标准偏差),并使用opencv对结果应用5px框模糊,我已经能够获得一个更有用的图像,该图像随照明条件的变化较小。这给了我这样的信息:

从这里开始,我不知道该怎么做才能在这些片段之间找到一条像素线。为每一块画出大致的轮廓还不够好,因为我希望能够将图像分割成几块,并且能够独立地移动这些块,而这些块仍然完美地结合在一起

findContours
的结果远远不够好


我在这里的理想输出是有一个覆盖原始图像的图像,并且在每对相邻的片段之间有一条1px的黑线。

您可以执行以下操作:

  • 使用局部阈值进行图像阈值化

  • 移除面积较小的区域

  • 反转图像(255-ThreholdImage)

  • 使用findContours查找连接的组件

  • 结果是:


    这远不是完美的,但我想这是因为我使用了你在帖子中给出的图片。我想如果你发布原始图像,我会得到更好的结果。

    也许你应该取当前图像的倒数(255->0和0->255),然后每个图像都会分开。现在使用findContours获得每个和平轮廓。@AmitayNachmani我不确定我对你的解释是否正确,但我很难理解,如果这些碎片还没有分开,反转图像将如何分离这些碎片。你能将标准偏差后的图像作为图像文件发布吗(不是带轴的打印屏幕)我想看看我的建议是否有意义。你是如何删除面积较小的区域的?你使用fincontours,如果面积小于某个阈值,你会对每个轮廓计算面积。