Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Python 如何检测接触边界的轮廓?_Python_Opencv - Fatal编程技术网

Python 如何检测接触边界的轮廓?

Python 如何检测接触边界的轮廓?,python,opencv,Python,Opencv,我正在编写一个程序,可以使用Python和OpenCV检测3D打印机粉底中的不一致性。到目前为止,我所做的是使用边缘检测创建一个遮罩图像,然后再次执行边缘检测并排除任何接触边界的轮廓。这工作得很好,但是我想检测接触边界的轮廓。我尝试过各种方法,但似乎都没有达到我想要的效果。似乎和我有同样的问题,提供了答案,但是它是用C++编码的,我不完全理解。 例如,下面是一个轮廓与边界接触的图像: 这是执行边缘检测后的图像:。正如你所看到的,图像的边界包含在我试图检测的轮廓中。请注意,边框并不总是正方形,但可

我正在编写一个程序,可以使用Python和OpenCV检测3D打印机粉底中的不一致性。到目前为止,我所做的是使用边缘检测创建一个遮罩图像,然后再次执行边缘检测并排除任何接触边界的轮廓。这工作得很好,但是我想检测接触边界的轮廓。我尝试过各种方法,但似乎都没有达到我想要的效果。似乎和我有同样的问题,提供了答案,但是它是用C++编码的,我不完全理解。 例如,下面是一个轮廓与边界接触的图像:


这是执行边缘检测后的图像:。正如你所看到的,图像的边界包含在我试图检测的轮廓中。请注意,边框并不总是正方形,但可以是任何多边形形状。

在Python/OpenCV中有一种方法可以做到这一点

  • 读取输入
  • 变灰
  • 门槛
  • 获取白色像素的边界
  • 将输入裁剪到这些边界以删除黑色边界
  • 设置裁剪图像的阈值以隔离较亮的区域
  • 应用形态学来清理它
  • 获取轮廓及其边界框
  • 测试边界框是否接触裁剪图像的4条边中的任意一条
  • 在输入图像上绘制轮廓边界框
  • 保存结果

输入:


用于查找边界的阈值图像:

裁剪输入:

第二个阈值:

输入上区域轮廓的边界框:

留言:

region touches the sides

region touches the sides