昨天我有一个类似的问题,并能够推断出错误,感谢您的帮助。那么今天我遇到了一个非常类似的问题,但是,就我的最佳水平而言,我仍然无法找到这个特定代码中分段错误的原因。OpenCV minMaxLoc函数中的分段错误
int main()
{
Mat src,dst,src_gray;
int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;
char* window_name = "sharpness estimate";
string dir = string("erez images");
vector<string> files = vector<string>();
getdir(dir,files);
cout<<files.size()<<endl;
int c;
double *estimate=0,*min=0;
Point *minLoc=0,*maxLoc=0;
string parent = "/home/siddarth/examplescv/erez images/";
for(int i=1; i<=files.size()-2;i++)
{
cout<<files.data()[i]<<endl<<i<<endl;
string path = parent+files.data()[i];
cout<<path<<endl;
src = imread(path);
if(!src.data)
{
return -1;
}
cout<<"check1"<<endl;
cvtColor(src,src_gray,CV_RGB2GRAY);
Laplacian(src_gray,dst,ddepth,kernel_size,scale,delta,BORDER_DEFAULT);
//convertScaleAbs(dst,abs_dst);
cout<<"check2"<<endl;
minMaxLoc(dst,min,estimate,minLoc,maxLoc,noArray());
cout<<"estimate :"<<*estimate<<endl;
}
waitKey(100000000000);
return 0;
}
我能够在运行时进行,直到CHECK2。我的猜测是分段错误是由于minMaxLoc引起的。请帮我解决这个问题。如果您能告诉我如何解决未来的分段故障以及为什么发生分段故障,我也会非常高兴。它实际上意味着什么?
注意:getDir函数是由我自己编写的,而不是内置的。它只是给出了给定目录中的目录和文件列表。在linux Ubuntu的11.10和OpenCv2.4.3调试器的
输出
上午执行的OpenCV:
“程序接收信号SIGSEGV,分割故障0x001b7c5c在 CV :: minMaxIdx(栽培品种: :_InputArray常量&,双*双*,诠释*,诠释*, CV :: _ InputArray常量&)()从 /usr/local/lib/libopencv_core.so.2.4"
为什么你没有尝试使用调试器? –
我用gdb来调试我的代码。请检查调试器输出的编辑。据我猜测,这是与minMaxLoc函数。 –