我尝试使用此代码对像素坐标值进行求和
这是代码
#include<cv.h>
#include<cvaux.h>
#include<highgui.h>
#include<iostream>
#include<cxtypes.h> // for cvarr
using namespace std;
void main()
{
IplImage* image;
int w,h;
char* filename;
filename="D:\\Recognition\\Image Crop\\7.jpg";
image=cvLoadImage(filename,0); //load image from file
// Get image attribute
w=image->width; //image width
h=image->height; //image height
cout<<"1. image width "<<w<<"\n2. image height "<<h<<" \n";
int Sx,Sy;
const CvArr* arr; // msh 3arf aih lzmtha
CvScalar se; // to store the num
//loop 3shan 23di 3ala kol pixel
for(int x=0;x<image->width;x++)
{
for(int y=0;y<image->height;y++)
{
se=cvGet2D(image,x,y);
Sx=se.val[y];
Sx+=Sx;
}
Sy=se.val[x];
Sy+=Sy;
}
cout<<"1. image width "<<w<<"\n2. image height "<<h<<" \n";
cout<<"3. sum x ="<<Sx<<"\n4. sum y ="<<Sy<<" \n";
}
此代码用于计数或获取图像中x和y的像素P(x,y)之和
这个输出是宽度和高度的值,但不计算x和y的值,并且在输出屏幕中超出范围
任何帮助
提前感谢。
答案 0 :(得分:0)
Sx=se.val[y];
Sx+=Sx;
这不符合您的想法。
a += b;
与a = a+b;
相同:在每次迭代中,您将覆盖Sx
的值,然后将其添加到自身(加倍)并将该值存回Sx
变量。 (在下一次迭代中被覆盖的地方。)