C++ 我正在尝试使用OpenCV访问像素值以计算WH内核(求和面积表) 积分(img、isum、CV_32F)//计算图像的积分。 对于(inti=0;i
经典缓冲区溢出C++ 我正在尝试使用OpenCV访问像素值以计算WH内核(求和面积表) 积分(img、isum、CV_32F)//计算图像的积分。 对于(inti=0;i,c++,opencv,C++,Opencv,经典缓冲区溢出 integral(img,isum,CV_32F); //calculating integral of the image. for(int i=0;i<e2;i++)//e2 is columns { for(int j=0;j<=e1;j++)//e1 is rows { /*intensity = isum.at<Vec3f>(j,i); m1v = inten
integral(img,isum,CV_32F); //calculating integral of the image.
for(int i=0;i<e2;i++)//e2 is columns
{
for(int j=0;j<=e1;j++)//e1 is rows
{
/*intensity = isum.at<Vec3f>(j,i);
m1v = intensity.val[0];
intensity = isum.at<Vec3f>((j+(p/2)),i);
m2v= intensity.val[0];*/
/*intensity = isum.at<Vec3f>((j+p),i);
m3v= intensity.val[0];*/
/*intensity = isum.at<Vec3f>(j,(i+p));
m4v= intensity.val[0];*/
intensity = isum.at<Vec3f>((j+(p/2)),i+p);
m5v= intensity.val[0];
/*intensity = isum.at<Vec3f>(j+p,i+p);
m6v= intensity.val[0];
//2*(m2v)+m6v+m4v-2*(m5v)-m1v-m3v;
featurev=2*(m5v)+m1v+m3v-2*(m2v)-m4v-m6v;
featurev/=(p*p);
cout<<k<<". featureV: "<<featurev<<endl;
k++;*/
}
}// p is patch size.
for(int i=0;我希望得到答复。第一个解决方案对我有效。还有一件事,运行几乎需要一分钟,是否有任何方法可以减少时间??无论如何,谢谢。是的,我可以想象。但优化这一点并不容易。查看并行_for,openmp,gpu stuff.btw,是你的积分()函数与内置函数有什么不同?我使用的是opencv的内置函数。还有其他选择吗?啊,对不起,忽略,我弄糊涂了。
for(int i=0;i<e2;i++)//e2 is columns
{
//...
intensity = isum.at<Vec3f>((j+(p/2)),i+p); // <- this will overflow
for(int i=0;i<e2-p;i++)//e2 is columns
if ( i+p < cols ) ...