0

我正在尝试手动实现 sobel 运算符。这是我在 python 2.7 中的代码:

import cv2
import numpy as np

sobelX = np.array([[1,0,-1],[2,0,-2],[1,0,-1]])
sobelY = sobelX.T

imgoriginal = cv2.imread("building.bmp") 

imgv = cv2.filter2D(imgoriginal, -1, sobelY)
imgh = cv2.filter2D(imgoriginal, -1, sobelX)
imgboth = (imgv**2 + img**2)**0.5

这是输出:

在此处输入图像描述

由于某种原因,算子的水平和垂直分量似乎有很好的效果,但组合图像有很多噪声。

我注意到当我执行 (imgv**2)**0.5 之类的操作时,也会引入大量噪音,即使理想情况下,我应该得到大致相同的图像。

有谁知道这里发生了什么?我应该以不同的方式组合图像吗?

4

1 回答 1

0

您应该使用addWeighted()OpenCV 中的方法

imgboth = cv2.addWeighted(imgh, 0.5, imgv, 0.5, 0)
于 2018-08-27T13:24:17.567 回答