如何使用imageprocessing在图像上只保留垂直线?

2024-03-29 14:21:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我在我的图像上应用了一些过滤器,只保留重要的信息。我想保留的主要信息是图像上的垂直线,如果有的话。有什么功能可以帮我吗?你知道吗

我已经按此顺序应用了以下筛选器:

灰度

闭合(形态变换)

卷积2D(scipy信号)

SOBEL_X(消除水平线)

阈值二进制

    def process_image(self):
        image = cv2.cvtColor(self.img_diagonal, cv2.COLOR_BGR2GRAY)


        # Step 1 - Mophological Filters

        kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

        closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)


        scharr = np.array([[-3 - 3j, 0 - 10j, +3 - 3j],
                          [-10 + 0j, 0 + 0j, +10 + 0j],
                          [-3 + 3j, 0 + 10j, +3 + 3j]])  # Gx + j*Gy

        grad = signal.convolve2d(closing, scharr, boundary='symm', mode='same')


        sobelx = cv2.Sobel(np.absolute(grad), cv2.CV_64F, 1, 0, ksize=3)


        ret, thresh2 = cv2.threshold(sobelx, 127, 255, cv2.THRESH_BINARY)

        cv2.imwrite("Temp/ritmo--%d.png" % self.count, thresh2)

        return thresh2

我希望在下面的图像上只保留垂直线,右边的图像是基础图像,没有处理,我想在左边的图像上应用一些过滤器:

(我不能发布图片,所以这里有链接)

https://i.imgur.com/kTOVjEJ.pnghttps://i.imgur.com/BjaOwQj.png


Tags: 图像imageself信息过滤器pngnpcv2