OpenCV - 有没有办法可靠地分割像这样的图像?
OpenCV - Is there a way to reliably segment images such as this one?
有没有办法可靠地分割与此相似的产品图片?即使只是将 3 种变体与边界分开也会很棒。问题是图像触及边界,我不知道如何处理!并不是所有的图像都是一样的,所以我需要一些高度适应性的东西。非常感谢!
这些是我使用 https://docs.opencv.org/master/d3/db4/tutorial_py_watershed.html 获得的结果。我的代码与教程完全相同。
https://i.stack.imgur.com/sSyrx.jpg
https://i.stack.imgur.com/u14BX.jpg
https://i.stack.imgur.com/n4Dct.png
我期望实现的是,至少对于包含内衣和相机设备的图像,因为另一个要复杂得多,所以图像中的每个对象都没有接触到另一个对象单独选择并用蓝色勾勒出轮廓。好像有些内裤选对了我的预期(第一条减去松紧带)和第二排第一条(完美)。
你可以像你想要的那样使用轮廓并从外面拿它。因为边框是白色的,所以你反转了阈值,所以你会有这样的东西:
import numpy as np
import cv2 as cv
im = cv.imread('5zdA0.jpg')
imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
cv.imshow('image', imgray)
cv.waitKey(0)
ret, thresh = cv.threshold(imgray, 160, 255, 1)
contours, hierarchy = cv.findContours(thresh, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(imgray, contours, -1, (0,255,0), 3)
cv.imshow('image', imgray)
cv.waitKey(0)
您必须为您的图像调整这些参数,但这应该能让您继续前进
有没有办法可靠地分割与此相似的产品图片?即使只是将 3 种变体与边界分开也会很棒。问题是图像触及边界,我不知道如何处理!并不是所有的图像都是一样的,所以我需要一些高度适应性的东西。非常感谢!
这些是我使用 https://docs.opencv.org/master/d3/db4/tutorial_py_watershed.html 获得的结果。我的代码与教程完全相同。
https://i.stack.imgur.com/sSyrx.jpg
https://i.stack.imgur.com/u14BX.jpg
https://i.stack.imgur.com/n4Dct.png
我期望实现的是,至少对于包含内衣和相机设备的图像,因为另一个要复杂得多,所以图像中的每个对象都没有接触到另一个对象单独选择并用蓝色勾勒出轮廓。好像有些内裤选对了我的预期(第一条减去松紧带)和第二排第一条(完美)。
你可以像你想要的那样使用轮廓并从外面拿它。因为边框是白色的,所以你反转了阈值,所以你会有这样的东西:
import numpy as np
import cv2 as cv
im = cv.imread('5zdA0.jpg')
imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
cv.imshow('image', imgray)
cv.waitKey(0)
ret, thresh = cv.threshold(imgray, 160, 255, 1)
contours, hierarchy = cv.findContours(thresh, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
cv.drawContours(imgray, contours, -1, (0,255,0), 3)
cv.imshow('image', imgray)
cv.waitKey(0)
您必须为您的图像调整这些参数,但这应该能让您继续前进