2017-06-03 46 views
0

如何在OpenCV Python中创建自己的内核?创建自定义内核垫

我试图创建下面索贝尔内核,但我得到的错误:

AttributeError: 'module' object has no attribute 'mat'

def sobel(src): 

    kernelX = [ 
     [ -1, 0, 1 ], 
     [ -2, 0, 2 ], 
     [ -1, 0, 1 ] 
    ] 

    kernelY = [ 
     [ -1, -2, -1 ], 
     [ 0, 0, 0 ], 
     [ 1, 2, 1 ] 
    ] 

    kernelXMat = cv2.mat(3, 3, cv2.cv2.CV_32FC1, kernelX) 
    kernelYMat = cv2.mat(3, 3, cv2.CV_32FC1, kernelY) 

    horizGradient = cv2.filter2D(src, -1, kernelXMat) 
    vertGradient = cv2.filter2D(src, -1, kernelYMat) 

    return [horizGradient, vertGradient] 

回答

2

Python的等价的OpenCV Mat的是numpy.array。指定的内核可以在python中按如下方式创建。

import numpy as np 

kernelXMat = np.array(kernelX, dtype=float); 
kernelYMat = np.array(kernelY, dtype=float);