0

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 の結果とは異なります。私を助けてください。

4

2 に答える 2

0

公式の Python バインディングを使用している場合は、GaussianBlur関数を直接呼び出すことができます。

dst = cv2.GaussianBlur(src, (7,7), 7.0/6.0)

または、内部的に同じものを呼び出すcv2.Smooth関数を使用します。CV_GAUSSIAN

于 2013-04-29T15:08:36.993 に答える
0

アンカーとカーネルの引数を入れ替えたようです。また、アンカーが 1D である理由がわかりません。

ドキュメントには構文がcv.Filter2D(src, dst, kernel, anchor=(-1, -1))であると記載されているため、 を使用する必要があると思いますcv.filter2D(imdist, mu, window, (-1, -1))

于 2013-04-29T13:00:22.740 に答える