为什么图像不合并

AHF*_*AHF 1 c++ opencv image image-processing computer-vision

我想在下面的代码中混合2个图像

Mat input = imread ("E:\\img1.jpg");
Mat image;
Mat img12=imread("D:\\vig.png",-1);  // load 'as is', don't convert to bgr !!
Mat ch[4]; 
split(img12,ch);
Mat im2 = ch[3];              // here's the vignette
im2 = 255 - im2; 
im2.convertTo(im2 , input.type());
resize(im2,image,Size(input.rows,input.cols));
blending_overlay(image , input , image);
imshow ("image",image);
waitKey();
Run Code Online (Sandbox Code Playgroud)

img12上的不同操作是因为它的形状,代码给我的运行时错误

在此输入图像描述

her*_*tao 5

正如@berak评论的那样,你没有cv::Size正确使用,第一个参数是width第二个参数height(不是相反).

更改

resize(im2, image, Size(input.rows, input.cols));
Run Code Online (Sandbox Code Playgroud)

resize(im2, image, Size(input.cols, input.rows));
Run Code Online (Sandbox Code Playgroud)

更新:您还需要解决image传递给函数的问题blending_overlay.它只有一个频道,但您正尝试从其中访问其他频道:

float target = (float)img1.at<uchar>(i, 3*j+c)/255.0 ; // img1 = image here
Run Code Online (Sandbox Code Playgroud)