当图像中的物体和背景的颜色几乎相同时,如何有效地执行边缘检测? 我尝试使用下面的代码,但它没有给出我想要的:
import cv2
import matplotlib.pyplot as plt
image = cv2.imread("image1.JPG")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.bilateralFilter(gray, 11, 17, 17)
edged = cv2.Canny(gray, 10, 150)
edged = cv2.dilate(edged, None, iterations=1)
edged = cv2.erode(edged, None, iterations=1)
plt.imshow(edged)
plt.show()
最佳答案
您不应使用 COLOR_BGR2GRAY
将图像转换为灰度,否则会丢失颜色数据。您想要做的是找到能够为您提供最佳边缘检测结果的色彩空间。您可以尝试 3 种颜色空间,其中一种可能适合您的应用程序:HSV、YCrCb 和 LAB。
这是对 LAB 图像的第二个分量进行精明边缘检测的结果。
lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
a_component = lab[:,:,1]
edged = cv2.Canny(a_component, 10, 50)
关于python - 找到图像中物体和背景颜色几乎相同的轮廓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56308105/