[英]converting the convolution code matlab to opencv in cpp
這是我的水平漸變結果。左邊一個是opencv結果,另一個是matlab結果
我正在嘗試做水平和垂直漸變,其中H = [1,-1]和V = [1; -1]
Mat H_gradient,G_Filter1,kernel,V_gradient;
Mat kernelH(1, 2, CV_32F);
kernelH.at<float>(0,0) = 1.0f;
kernelH.at<float>(0,1) = -1.0f;
Mat kernelV(2, 1, CV_32F);
kernelV.at<float>(0,0) = 1.0f;
kernelV.at<float>(1,0) = -1.0f;
cvtColor( image, image, CV_RGB2GRAY );
filter2D( image, H_gradient, -1 ,kernelH , Point( -1, -1 ), 0, BORDER_DEFAULT );
filter2D( image, V_gradient, -1 ,kernelV , Point( -1, -1 ), 0, BORDER_DEFAULT );
但是仍然與我的matlab代碼結果不匹配。 我不知道為什么?
我的Matlab漸變代碼
image=double(image);
% horizontal and vertical gradient
H=[1 -1];
V=[1;-1];
H_Gradient=conv2(image,H,'same');
V_Gradient=conv2(image,V,'same');
嘗試做
cvtColor( image, image, **CV_BGR2GRAY** );
代替
cvtColor( image, image, **CV_RGB2GRAY** );
如果您使用默認的讀取參數,則OpenCv將使用BGR顏色格式而不是RGB作為默認值!
進行與Matlab中相同的操作,首先將圖像轉換為兩倍。
image.convertTo(image, CV_32F);
現在,我在OpenCv和Matlab中得到了相同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.