代码如下
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
bool MultiBlending();
int main()
{
if (MultiBlending())
cout << "Program Running Success." << endl;
waitKey(0);
return 0;
}
bool MultiBlending()
{
vector<Mat> Channels;
Mat srcImage1 = imread("dota_jugg.jpg");
Mat dotaLogo = imread("dota_logo.jpg", 0);
Mat imgROI,
dstImage,
srcImage2;
//Process begins
split(srcImage1, Channels);
//Blue channel
Mat blueChannel;
blueChannel = Channels.at(0);
//Define ROI
imgROI = blueChannel(Rect(500, 250, dotaLogo.cols, dotaLogo.rows));
//Blend
addWeighted(imgROI, 1.0, dotaLogo, 0.5, 0, imgROI);
//Merge
merge(Channels, dstImage);
//Display
imshow("Blue Blending", dstImage);
return true;
}
这只是一个简单的程序,它应该正常工作。但我一直收到结果&#34; Debug Assertion Failed&#34; Error screenshot
将&#34;步骤应用于&#34;方法,我发现在调用函数&#34; MultiBlending&#34;之后发生了错误。更具体地说,表达式&#34;返回true&#34;。我已经尝试将函数中的所有内容放入main函数中。然后我收到了相同的结果,这个结果发生在表达式&#34;返回0&#34;在主要功能。
所以我一直在想也许与释放内存有关。但我不知道在哪里以及如何?
答案 0 :(得分:0)
对于合并,您需要:
merge(Channels,3, dstImage);
我不确定,但我认为你需要这个,同时声明频道:
vector<Mat> Channels(3);