0
직사각형의 왼쪽과 오른쪽에서 반복을 만들고 라인을 사용하여 연결하고 (왼쪽 그림) this 과 같은 가장 짧은 라인을 선택하고 싶습니다. 그리고 나서 윤곽선과의 선 교차점 인 위치를 얻고 싶습니다 (오른쪽 그림) this. 어느 누구도 해결책을 알고 있습니까?직사각형에 반복 처리하고 Contour에서 가장 짧은 라인 찾기 OpenCV
직사각형의 왼쪽과 오른쪽에서 반복을 만들고 라인을 사용하여 연결하고 (왼쪽 그림) this 과 같은 가장 짧은 라인을 선택하고 싶습니다. 그리고 나서 윤곽선과의 선 교차점 인 위치를 얻고 싶습니다 (오른쪽 그림) this. 어느 누구도 해결책을 알고 있습니까?직사각형에 반복 처리하고 Contour에서 가장 짧은 라인 찾기 OpenCV
//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);
}
}