gpt4 book ai didi

c++ - 追踪连接的像素

转载 作者:太空宇宙 更新时间:2023-11-03 23:03:05 26 4
gpt4 key购买 nike

我想追踪图像中所有相连的像素。我使用 canny 算法进行边缘检测,现在需要获取每个独特的形状。

enter image description here这是我的以下代码

x_axis = marker_i;   // x & y co-ordinates of the first detected pixels
y_axis = marker_j;

do
{

for (int i=0;i<8;i++){

if(i==0){x_axis = x_axis-1; y_axis = y_axis-1;} // each iteration checks one
if(i==1){x_axis = x_axis; y_axis = y_axis+1;} // of the 8 adjacent pixels
if(i==2){x_axis = x_axis; y_axis = y_axis+1;} // for a match
if(i==3){x_axis = x_axis+1; y_axis = y_axis-2;}
if(i==4){x_axis = x_axis; y_axis = y_axis+2;}
if(i==5){x_axis = x_axis+1; y_axis = y_axis-2;}
if(i==6){x_axis = x_axis; y_axis = y_axis+1;}
if(i==7){x_axis = x_axis; y_axis = y_axis+1;}

if(x_axis >= 1024 || y_axis >= 1280){ x_axis = 0; y_axis = 0;}

if(ch_rd == red [x_axis][y_axis] && ch_gr == green[x_axis][y_axis]
&& ch_bl == blue[x_axis][y_axis] && pixel_comp[x_axis][y_axis]==0){

map++;
pixel_comp[x_axis][y_axis] = 2; // marks that pixel as read
pixal[num][0] = x_axis;
pixal[num][1] = y_axis;

if (map == 1){ curs[0] = x_axis; curs[1] = y_axis;}
if (map > 1){ div[est] = num; est++;} // if there is more than one detection
num++; // adds remaining to an array div

}

}

if(map==0){
x_axis = pixal[div[prev]][0]; y_axis = pixal[div[prev]][1]; prev++;
// if nothing is detected goes to the last item from array div
}
else{
x_axis = curs[0]; y_axis = curs[1];
}
if(map==0 && prev>=est){ dead_end = 1;}
map = 0;
}
while (dead_end==0);

我在以前版本的程序中使用它,不幸的是它会检测所有形状,即使它们没有连接而不是一个一个地连接,现在我一直在尝试 opencv 并且想知道是否有函数或实现这是哪个,甚至是我可以使用的非 opencv 实现或示例?用于此目的的简单算法是什么?

最佳答案

一个很好的起点是关于 Flood Fill 的维基百科文章.这有填充算法的动画。

[您没有要求更正您的程序。]

关于c++ - 追踪连接的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com