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上的不同操作是因为它的形状,代码给我的运行时错误
正如@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)