OpenCV函数调试断言失败"拆分"&"合并"

时间:2016-02-11 04:34:45

标签: c++ opencv

代码如下

#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;在主要功能。

所以我一直在想也许与释放内存有关。但我不知道在哪里以及如何?

1 个答案:

答案 0 :(得分:0)

对于合并,您需要:

merge(Channels,3, dstImage);

我不确定,但我认为你需要这个,同时声明频道:

vector<Mat> Channels(3);