gpt4 book ai didi

c++ - 图像像素总和

转载 作者:太空狗 更新时间:2023-10-29 20:16:04 26 4
gpt4 key购买 nike

我尝试通过将图像划分为 block 网格并获取每个 block 的像素总和来对黑白区域的像素值求和。

当我打印每个值时,值都相同 = 255。我的问题是:为什么会这样?有的 block 只有黑色像素,有的只有黑色和白色?

double* divide (Mat I)
{
//double* pointer;
static double* sums= new double [9];
//pointer= sums[0];
//double sums2[10];

Mat block;
//Mat block2;

int numberblocks=9;
int bh;
int bw;
//int bh2;
//int bw2;

bh=I.cols/numberblocks;
bw=I.rows/numberblocks;
//bh2=u.cols/numberblocks;
//bw2=u.rows/numberblocks;
//
double blockarea=bh*bw;
//double num=0;
//double blockarea2=bh2*bw2;

//int r=0;
//int c=0;
//int err=0;

for(int a=0;a<9;a++)
{
for (int r = 0; r < I.rows; r += bw)
{
for (int c = 0; c < I.cols; c += bh)
{

block = I(cv::Range(r, min(r + bw, I.rows)),cv::Range(c, min(c + bh, I.cols)));


}
}
double sum=0;

for(int i=0;i<block.rows;i++)
{
for(int j=0;j<block.cols;j++)
{
sums[a] = sum + block.at<uchar>(i,j); //sums[k-1] + block.at<uchar>(i,j);
}
}
cout<<"sum of"<<a<<"is"<<sums[a]<<endl;


}


return sums;

}

最佳答案

我觉得可以

     for(int i=0;i<block.rows;i++)
{
for(int j=0;j<block.cols;j++)
{

sum = sum + block.at<uchar>(i,j); //sums[k-1] + block.at<uchar>(i,j);
}
}
sums[a]=sum;

调试一下就可以了。如果不使用 sum 它将是:

     for(int i=0;i<block.rows;i++)
{
for(int j=0;j<block.cols;j++)
{

sums[a] = sums[a] + block.at<uchar>(i,j); //sums[k-1] + block.at<uchar>(i,j);
}
}

关于c++ - 图像像素总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10819226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com