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 ) ...