我想在矩形的每个左右进行迭代并使用 line 连接它并选择最短的线,如(左图)this 。然后我想得到与轮廓线相交的位置(右图)。有人知道解决方案吗?
问问题
102 次
1 回答
0
//Line Iterator = get coordinate on line
LineIterator it(drawing, titik_kotak[0], titik_kotak[1],8); //left side
LineIterator it2(drawing, titik_kotak[2], titik_kotak[3],8); //right side
for(int i=0; i<1, i<1 ; i++,++it,++it2)
{
sisikiri = it.pos();
kiri[0]= Point(sisikiri.x, sisikiri.y);
printf("Kiri Line index[%d] = [%d,%d]\n", i, sisikiri.x, sisikiri.y);
sisikanan = it2.pos();
kanan[0]= Point(sisikanan.x, sisikanan.y);
printf("Kanan Line index[%d] = [%d,%d]\n", i, sisikanan.x, sisikanan.y);
//make diagonal line left to right
//line(drawing, kiri[i], kanan[i], Scalar(123,0,233),1,8);
//find intersection between line and kontur
findLocIntersection(drawing, i,i);
}
void findLocIntersection(Mat drawing, int m, int n){
LineIterator iterasi(drawing, kiri[m], kanan[n],8);
for(int b=0; b<iterasi.count; b++,++iterasi)
{
iter = iterasi.pos();
gariske[m]= Point(iter.x, iter.y);
//printf("Garis ke- %d, point ke- %d, loc= [%d,%d]\n\n\n", m, b, iter.x, iter.y);
//creat circle on intersection point
//255 = putih Scalar(0,0,255)=Merah
if(drawing.at<Vec3b>(iter.y, iter.x)[0] == 255 && drawing.at<Vec3b>(iter.y, iter.x)[1] == 255 && drawing.at<Vec3b>(iter.y, iter.x)[2] == 255)
{
printf("DOO !!! location kke-%d = [%d,%d]\n", b,iter.x, iter.y);
circle(drawing,Point(iter.x,iter.y),1,Scalar(0,0,255),1,8);
}
}
于 2017-05-21T00:21:00.763 回答