模糊图像金字塔的图像 - 矢量下标超出范围

时间:2017-07-25 13:02:09

标签: c++ image opencv vector

我正在尝试加载图像,计算图像金字塔(保存每个图像),然后用C ++中的opencv 3.2模糊金字塔的每个图像。当我运行我的程序时,我收到错误:

  

矢量线:1740表达式:矢量下标超出范围

这是我的代码:

#include "stdafx.h"
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <iostream>
#include <opencv2/shape/shape.hpp> 

using namespace std;
using namespace cv;
using namespace cv::xfeatures2d;


int main(int argc, char** argv)
{  
    // Read the image
    Mat img_1;
    img_1 = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);

    // Build an image pyramid and save it in a vector of Mat
    vector<Mat> img_1_pyramid;
    int pyramid_octaves = 3;
    buildPyramid(img_1, img_1_pyramid, pyramid_octaves); 
    /* void cv::buildPyramid (InputArray src, OutputArrayOfArrays dst, int 
    maxlevel, int borderType = BORDER_DEFAULT) */   

    // Initialize parameters for the first image pyramid
    vector<Mat> reduced_noise_1;
    blur(img_1_pyramid[0], reduced_noise_1[0], Size(3,3));
    /* void cv::blur (InputArray src, OutputArray dst, Size ksize, Point 
    anchor=Point(-1,-1), int borderType=BORDER_DEFAULT)*/

return 0;
}

我还尝试使用Mat对象:Mat reduced_noise_1;或预定义大小vector<Mat> reduced_noise(4);的向量,我可以使用img_1_pyramid[0]绘制imshow并接收正确的图片。

当我调试程序时,我在cvstd.hpp的第621行收到错误:

String::String(const char* s)
    : cstr_(0), len_(0)
{
    if (!s) return;
    size_t len = strlen(s);  // Here appears the error (only in German;))
    memcpy(allocate(len), s, len);
}

0 个答案:

没有答案