假設我有一個圖像矩陣和我在一個特定的像素[說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的麻煩。您在編寫算法時遇到困難。一旦你完成了這個任務 - 你就會很好! :-) –