0

我有一个图像,我对其应用双边滤波器,然后进行自适应阈值处理以获得下面的图像。

原始图像(这是对象深度图像的屏幕截图)在此处输入图像描述

阈值图像在此处输入图像描述

我想将线条拟合到垂直部分/线条并找到中心点,输出如下图所示:

在此处输入图像描述

我似乎无法理解cv2.adaptiveThreshold()的输出。紫色像素(即我的边缘)如何表示?以及如何安装一条线?MWE:

import cv2

image = cv2.imread("depth_frame0009.jpg")
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

bilateral_filter = cv2.bilateralFilter(gray_image, 15, 50, 50)
plt.figure()
plt.imshow(bilateral_filter)
plt.title("bilateral filter")
#plt.imsave("2dimage_gaussianFilter.png",blurred)
plt.imsave("depthmap_image_bilateralFilter.png",bilateral_filter)


th3 = cv2.adaptiveThreshold(bilateral_filter,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
plt.figure()
plt.imshow(th3)

========

编辑:

精明的边缘在此处输入图像描述 轮廓在此处输入图像描述

4

1 回答 1

0

它们被表示为一个图像,一个 uint8 的矩阵。

它是紫色和黄色的原因是因为 matplotlib 正在对其应用颜色图。

在绘制图像处理输出图像时,我通常更喜欢使用一些特定的参数,例如

plt.imshow(th3, cmap='gray', interpolation='nearest')

如果您对查找和拟合线特别感兴趣,则可能需要使用不同的表示形式,例如Hough 线。一旦你在图像中有线条,你就可以选择最适合的线条并找到它们之间的中心点。

于 2020-07-29T20:51:45.023 回答