繁体   English   中英

在python中将Matlab转换为OpenCV

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM