我試圖通過將圖像分成塊網格並獲得每個塊的像素總和來對黑色和白色區域的像素值求和。圖像像素總和
當我打印每個值時,值都是相同的= 255。我的問題是:爲什麼會發生這種情況?有些塊只有黑色像素,有些塊有黑色和白色?
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;
}
如果您希望我們查看它,請確保正確設置代碼的格式。它看起來越好,幫助就越容易。 – Bart
逐步調試代碼並檢查每個變量的值。你會意識到你沒有妥善保存這些錢。也許你需要定義另一個變量。 –