这是我的水平渐变结果。左边是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');
答案 0 :(得分:0)
尝试做
cvtColor( image, image, **CV_BGR2GRAY** );
而不是
cvtColor( image, image, **CV_RGB2GRAY** );
如果您使用默认的imread参数,OpenCv默认使用BGR颜色格式而不是RGB!
答案 1 :(得分:0)
与您在Matlab中所做的相同,首先将图像转换为双倍。
image.convertTo(image, CV_32F);
现在我在OpenCv和Matlab中得到了相同的结果。