[英]Convert Matlab to OpenCV in python
我正在尝试使用OpenCV包将一段Matlab代码转换为python。 但是我不知道如何在Matlab中实现filter2。 这是matlab代码。
imdist = imread("testimage1.bmp");
imdist = rgb2gray(imdist);
window = fspecial('gaussian',7,7/6);
window = window/sum(sum(window));
mu = filter2(window, imdist, 'same');
我的python代码在这里:
import pyopencv as cv
import numpy as np
img = cv.imread("testimage1.bmp")
imdist = cv.Mat()
cv.cvtColor(img, imdist, cv.CV_BGR2GRAY)
row = cv.getGaussianKernel(7, 7.0/6.0)
col = cv.getGaussianKernel(7, 7.0/6.0)
window = cv.asMat(np.dot(col[:], row[:].T))
window = cv.asMat(window[:]/sum(sum(window[:])))
mu = cv.Mat()
# I'm not sure it should be filter2D
cv.filter2D(imdist, mu, -1, window)
过滤器蒙版“窗口”相同。 但是变量“ mu”与matlab结果不同。 请帮我。
在我看来,您已经改变了anchor和kernel参数。 另外,不确定为什么您的锚点是一维的。
文档说语法是cv.Filter2D(src, dst, kernel, anchor=(-1, -1))
,所以我认为您应该使用cv.filter2D(imdist, mu, window, (-1, -1))
。
如果您使用的是官方Python绑定,则可以直接调用GaussianBlur函数:
dst = cv2.GaussianBlur(src, (7,7), 7.0/6.0)
或将cv2.Smooth
函数与内部调用该函数的CV_GAUSSIAN
一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.