python-Opencv或numpy中的非sobel离散渐变

时间:2014-01-20 11:38:30

标签: python opencv numpy

我想根据以下面具计算二维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计算所述渐变的最快方法是什么?

1 个答案:

答案 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