簡體   English   中英

在cpp中將卷積代碼matlab轉換為opencv

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM