Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opencv2 HOG代码中的运行时错误SIGSEV_Opencv_Gradient_Runtime Error_Histogram_Integral - Fatal编程技术网

opencv2 HOG代码中的运行时错误SIGSEV

opencv2 HOG代码中的运行时错误SIGSEV,opencv,gradient,runtime-error,histogram,integral,Opencv,Gradient,Runtime Error,Histogram,Integral,我得到了我正在处理的代码,从中提取 目前我正在将该页上的代码移植到OpenCV2C++实现,这是我至今所拥有的。p> 主要 使用名称空间cv; 使用名称空间std; //康斯坦茨 #定义PI 3.142 //职能 向量提取积分历史(Mat-in,const-int-nbins); int main(int argc,char*argv[]) { //变量定义 垫架; 向量积分(9); namedWindow(“主视频”,窗口自动调整大小); namedWindow(“临时窗口”,窗口自动大小)

我得到了我正在处理的代码,从中提取

目前我正在将该页上的代码移植到OpenCV2C++实现,这是我至今所拥有的。p> 主要


使用名称空间cv;
使用名称空间std;
//康斯坦茨
#定义PI 3.142
//职能
向量提取积分历史(Mat-in,const-int-nbins);
int main(int argc,char*argv[])
{
//变量定义
垫架;
向量积分(9);
namedWindow(“主视频”,窗口自动调整大小);
namedWindow(“临时窗口”,窗口自动大小);
//卡图拉·德尔录像带酒店
视频捕获上限(0);
如果(!cap.isOpened()){
返回-1;
cout>框架;
imshow(“主视频”,帧);
等待键(1);
提取器(第9帧);
}
积分;
}
作用


//积分的计算组织图
向量提取积分历史(Mat-in,const-int-ins){
灰色垫子;
int x,y;
浮动温度梯度、温度幅度;
namedWindow(“临时窗口”,窗口自动大小);
//这是一次正常化的会议
CVT颜色(in、in_灰、CV_RGB2灰);
均衡器历史(灰色,灰色);
//计算x、y方向上的图像导数
Mat xsobel,ysobel;
Sobel(灰色,X色,CV_32FC1,1,0,1);
Sobel(灰色,ysobel,CV_32FC1,0,1,1);
单位为_gray.release();
//9幅图像的矩阵——修订
向量箱;
对于(int i=0;i<\n宾斯;i++){
箱子[9]=材料::零(in.size(),CV_32F);
}
//图像积分的矩阵形式
向量积分;
对于(int i=0;i<\n宾斯;i++){
积分[9]=Mat(大小(单位为灰色.cols+1,单位为灰色.rows+1),CV_64F);
}
//孔多雷斯加尔各拉酒店
对于(y=0;y

bins[9] = Mat::zeros(in.size(),CV_32F);
正在尝试访问
bin
的第十个(注意零索引)元素。由于
\u nbins
是以
9
的值传入的,这超过了向量的边界。另外,如果使用
.at()
而不是使用
[]访问元素
,这类错误将抛出一个
超出范围的异常
异常,这对诊断问题应该更有帮助

将向量的每个元素分配给<代码> cv::MAT包含零,考虑将循环更改为

for (int i = 0; i < _nbins ; i++) {
    bins[i] = Mat::zeros(in.size(),CV_32F);
}

请注意,您在初始化
积分时也遇到了同样的问题

谢谢,我已经解决了这个问题,因为这是一个老问题,但现在我在使用同样的代码时遇到了另一个问题。我需要它执行得更快,因为到目前为止,当我将此代码应用到QT GUI应用程序时,我将其称为线程y Milisond。我有什么办法可以提高这段代码的性能吗?请检查是否有糟糕的编程或浪费的资源。这真的应该是一个单独的问题。在这个网站上,接受正确的答案是一个好主意,既要向回答的人表示感谢,也要向其他人表明已经找到了解决方案。您甚至可以发布你自己问题的答案(比如在这个例子中)。是的,很抱歉,我总是接受从我身边溜走的答案。我会发布一个新的帖子,谢谢。
bins[9] = Mat::zeros(in.size(),CV_32F);
for (int i = 0; i < _nbins ; i++) {
    bins[i] = Mat::zeros(in.size(),CV_32F);
}
vector<Mat> bins(_nbins, Mat::zeros(in.size(),CV_32F));