假设我有一个图像矩阵和我在一个特定的像素[说4]这样的加载附近的像素:如何使用指针
0 1 2
3 `4` 5
6 7 8
我通过所有的像素试图循环和我试图访问0,1,2,3,5 6,7,8其值我存储在数组中,名为Pixel
....这里是我使用OpenCV的尝试,请告诉我哪里出错了。
我正在使用指针temp_ptr
访问IplImage image
。
uchar* temp_ptr=0 ;
CvScalar Pixel[3][3];
int rows=image->height,cols=image->width,row,col;
for(row = 0; row < rows-2; ++row)
{
for (col = 0; col < cols-2; ++col)
{
temp_ptr = &((uchar*)(image->imageData + (image->widthStep*row)))[col*3];
for (int krow = -1 ; krow <= 1; krow++)
{
for (int kcol = -1; kcol <= 1; kcol++)
{
temp_ptr = &((uchar*)(image->imageData + (image->widthStep*row+krow)))[(col+kcol)*3];
for(int i=0; i < 3; i++)
{
for(int j=0; j < 3; j++)
{
for(int k=0; k < 3; k++)
{
Pixel[i][j].val[k]=temp_ptr[k];
}
}
}
}
}
}
}
我真的不知道如何使用temp_ptr
加载sorrounding像素,请帮助我。
拥有六个嵌套for循环几乎可以证明你错误的地方。你是否需要遍历所有像素或只有那些可以拥有全部八个“邻居”的人? – jrok
只有那些可以有8个邻居....也是我以相同的方式访问所有像素的方式,我将通过计算所有像素的平均值并存储来自Color [RBG]数组'Pixel'的新值来存储值...到中心即“4”像素。 –
你有很多有用的提示。最重要的是,你永远不会将结果写回图像。而且,我不想让人觉得苛刻,但正如有人说“开始学习编程 - 你的代码完全混乱”。 Everybodys代码在开始时是一个完整的混乱,我认为你应该尝试自己解决这个问题,并试图理解你在做什么。你没有OpenCV的麻烦。您在编写算法时遇到困难。一旦你完成了这个任务 - 你就会很好! :-) –