Я пишу ручной код для эрозии или расширения. И я не знаю, почему следующий код не работает.
Как видите, когда я нахожусь в точке (i, j), я обхожу эту точку и ищу любой белый пиксель. Если есть какой-либо (в матрице Литтл 3х3 (ii, jj)) белый пиксель, я меняю свою точку (i, j) на белый.
Кто-нибудь знает, почему он не работает?
Я убедился, что загружаю двоичное изображение. Если я посчитаю белые и черные пиксели, то получу нужное количество пикселей.
for (int i=1; i<gray.cols-1; i++)
{
for(int j=1; j<gray.rows-1; j++)
{
ii=i;
jj=j;
for (ii-1; ii<i+2; ii++ )
{
for (jj-1; jj<j+2; jj++ )
{
if (gray.at<uchar>(ii,jj) ==255)
gray.at<uchar>(i,j) = 255;
};
};
};
Если у кого-нибудь есть идеи, как это сделать по-другому?