Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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_Image Processing - Fatal编程技术网

Python 获取边界框内的对象轮廓

Python 获取边界框内的对象轮廓,python,opencv,image-processing,Python,Opencv,Image Processing,我想检测一下肉的轮廓。我已经为肉类训练了一个目标检测模型。模型的输出如下所示,左上角的边界框坐标为(44,34),右下角的边界框坐标为(321348) 如何通过opencv或其他图像处理库基于此输出分割肉的轮廓?您可以使用Grabcut[1]算法从边界框中提取一段 Grabcut尝试将像素分为两组,边界框外部和内部,同时惩罚与颜色相似的相邻像素的标签不一致 例如: 导入cv2 将numpy作为np导入 im=cv2.imread('beef.jpg') 掩码=np.0(im.shape[:2]

我想检测一下肉的轮廓。我已经为肉类训练了一个目标检测模型。模型的输出如下所示,左上角的边界框坐标为(44,34),右下角的边界框坐标为(321348)


如何通过opencv或其他图像处理库基于此输出分割肉的轮廓?

您可以使用Grabcut[1]算法从边界框中提取一段

Grabcut尝试将像素分为两组,边界框外部和内部,同时惩罚与颜色相似的相邻像素的标签不一致

例如:

导入cv2
将numpy作为np导入
im=cv2.imread('beef.jpg')
掩码=np.0(im.shape[:2],np.uint8)
bgd_模型=np.zeros((1,65),np.float64)
fgd_模型=np.0((1,65),np.64)
rect=(30,25,30+318,25+350)#(x,y,w,h)
cv2.grabCut(im、mask、rect、bgd_模型、fgd_模型、10、cv2.GC_INIT_和_rect)
mask=np.where((mask==cv2.GC_BGD)|(mask==cv2.GC_PR_BGD),0,1).astype(np.uint8)
轮廓,u=cv2.找到的轮廓(遮罩,cv2.RETR\u外部,cv2.链近似\u简单)
cv2.绘制等高线(im,等高线,-1,(0,255,0))
imwrite(“output.png”,im)


[1] 罗斯特、卡斯滕、弗拉基米尔·科尔莫戈罗夫和安德鲁·布莱克。“GrabCut”使用迭代图形切割进行交互式前景提取。“图形上的ACM事务(TOG)23.3(2004):309-314.

您面临的问题是由于顶部的阴影,这使得肉在某些位置与背景一样暗

您可以尝试对图像的红色部分进行二值化,然后使用形态学闭合删除孔,尽管这会稍微损坏轮廓


你认为深度估计正确吗?牛肉下面的表面似乎与相机垂直且平坦,但深度估计中没有显示这一点。这不是100%正确,但我在平面上测试了一本具有正常轮廓检测的书,平均了书轮廓和平坦表面内的深度值(参考),然后线性计算书的深度,然后计算书的厚度。这导致了5%的误差。好的,你只想提取牛肉的轮廓吗?我认为这可以在没有深度估计的情况下实现。是的!我还训练了一个模型来检测肉(包围盒,而不是分割)如果这有帮助的话。我已经通过使用大津的阈值来移除瑕疵取得了进展,但仍然不够。根据要求更新了问题。太棒了!谢谢。这看起来非常棒。你建议关闭内核的形状是什么?我使用了一个八角形,这是一个简单的圆近似。我得到了类似的结果,但没有你想象的好乌尔斯。你能告诉我你在变形中使用了多大的尺寸和多少次迭代吗。如果你还记得的话就关闭吗?@aizuon:对不起,我不记得了。我增加了,直到“洞”消失。