2017-05-16 1 views

답변

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); 
    } 
} 
관련 문제