我想根据以下面具计算二维numpy图像数组的离散X和Y渐变数组:
import numpy as np
mx = np.array([[-1, 0, 1]])
my = np.array([[-1, 0, 1]]).T
我查看了opencv文档并且除了Sobel运算符之外没有找到任何我不感兴趣的内容。使用opencv / cv2使用纯numpy或numpy计算所述渐变的最快方法是什么?
答案 0 :(得分:5)
知道了,只需像这样使用cv2.filter2D
:
import numpy as np
import cv2
mx = np.array([[-1, 0, 1]])
my = np.array([[-1, 0, 1]]).T
im = np.array([[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6],
[3, 4, 5, 6, 7],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9],]).astype(np.uint8)
gx = cv2.filter2D(im, cv2.CV_32F, mx)
gy = cv2.filter2D(im, cv2.CV_32F, my)
print gx.shape
print gx.dtype
print gx
给出:
(5, 5)
float32
[[ 0. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 0.]
[ 0. 2. 2. 2. 0.]]
可在以下网址找到文档:http://docs.opencv.org/modules/imgproc/doc/filtering.html#filter2d