3

我目前正在编写我的第一个 C++ 程序,到目前为止,即使它不完整,我也想在处理完所有编译器错误后尝试一些测试运行。我将在以下链接中提供大部分代码: http://pastie.org/8196032 http://pastie.org/8196025 因为我只允许发布 2 个链接,所以缺少 ImageComparison 的标头,即我认为不是很重要。stdafx.h 包括所需的 opencv 和 std 库。我运行 gdb 并得到了这个结果:

Program received signal SIGSEGV, Segmentation fault.
0x000000000040655c in cv::Mat::release() ()
(gdb) bt
>#0  0x000000000040655c in cv::Mat::release() ()
>#1  0x0000000000406410 in cv::Mat::operator=(cv::Mat const&) ()
>#2  0x00000000004052ed in ImageComparison::LoadImages() ()
>#3  0x000000000040518e in ImageComparison::DoImCo() ()
#4  0x0000000000405019 in main () 

这并没有给我任何线索这里有什么问题。如果我的问题只是转储,我深表歉意,但我感谢任何建议。

4

2 回答 2

3

在行中:

vector<Mat> images;

图像[i-1] = imread("ImageData/"+m_object_type+"/"+m_object_type+"-"+buffer+".jpeg", 1);

您已经声明了向量images,但它的大小仍未指定。因此,您不能根据索引分配其元素。相反,您可以使用push_backMat元素:

images.push_back(imread("ImageData/"+m_object_type+"/"+m_object_type+"-"+buffer+".jpeg", 1));

images或者,您可以使用大小初始化向量m_number_of_images

vector<Mat> images(m_number_of_images);
于 2013-08-01T07:55:58.663 回答
2
char* buffer;

这条线LoadImages需要是一个实际的数组或至少是用 .aquired 的东西new

例如:

char buffer[100];
于 2013-08-01T07:55:19.557 回答