Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 卷积码matlab到cpp中opencv的转换_C++_Opencv_Gradient_Convolution - Fatal编程技术网

C++ 卷积码matlab到cpp中opencv的转换

C++ 卷积码matlab到cpp中opencv的转换,c++,opencv,gradient,convolution,C++,Opencv,Gradient,Convolution,这是我的水平梯度结果。左边一个是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 kern

这是我的水平梯度结果。左边一个是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 );
试着做

cvtColor( image, image, **CV_BGR2GRAY** );
而不是

cvtColor( image, image, **CV_RGB2GRAY** );

如果您使用默认的imread参数,OpenCv将使用BGR颜色格式而不是RGB作为默认值

执行与在Matlab中相同的操作,首先将图像转换为double

image.convertTo(image, CV_32F);

现在我在OpenCv和Matlab中得到了相同的结果。

你能给我们展示一下示例图像中的差异吗?我添加了左边的图像是OpenCv结果@ypnosI改为*CV_bgr2;灰色,但我的OpenCv和Matlab结果不是sameI改为内核H=[1-1]改为H=[-1 1],现在可以工作了。谢谢你的建议@André
image.convertTo(image, CV_32F);