* 십자 마크 중심에서
떨어진 값 구하기
gray_dilation_shape(m_hoSource, &ImageMax, 1.5, 1.5,
"rectangle"); // Gray Level 확장
threshold(ImageMax, &Region, 200, 255); //
Threshold 찾기
connection(Region, &ConnectedRegions); //
지정영역연결
select_shape(ConnectedRegions, &SelectedRegions1, "width",
"and",300, 400); // 지정크기영역만찾기(너비)
select_shape(SelectedRegions1, &SelectedRegions2, "height",
"and",300, 400); // 지정크기영역만찾기(높이)
select_shape(SelectedRegions2, &RegionTrans, "area",
"and",50000, 100000); // 지정크기영역만찾기(영역)
shape_trans(SelectedRegions, &RegionTrans, "rectangle1"); // 영역을변경
// 이하 이부분은 동일함 – 어차피 한 개의 영역만 구하고 화면 표시하는
부분이므로..
count_obj(RegionTrans, &SelectNum); //
구한 영역 개수 구하기
long nNum;
tuple_int(SelectNum, &nNum); //
구한 개수를 일반 상수로 변경
// 구한 개수가 하나일 경우에만 다음과 같이 처리 – 하나 이상일 경우
에러 처리
HTuple X,Y, HalfX, HalfY;
area_center(RegionTrans, &Area, &Row, &Column); // 구한 영역 중심값 구하기
// 영역 계산부분
// 현재 구한 부분을 전체 길이의 절반으로 뺀값이 중심부터 떨어진 값임
X = Column - (m_htImgWidth * 0.5); //
가로축의 부분 계산
Y = Row - (m_htImgHeight * 0.5); //
세로축 부분 계산
tuple_int(X, &lWidth); //
구한 값을 일반 상수로 변경
tuple_int(Y, &lHeight);
// 구한 결과값을 픽셀당 유니트 크기로 계산하기
nResultX = lWidth * PIXEL_UNIT; //
PIXEL_UNIT은 미리 정의함
nResultY = lHeight * PIXEL_UNIT;
set_color(m_htDisp, "red"); //
표시색상
set_tposition(m_htDisp, 10, 10);//nZoomScale + 10, nZoomScale + 10); // 텍스트 표시 위치 설정
write_string(m_htDisp, "X : " + nResultX + " Y : " +
nResultY); // 결과값표시
// 구한 영역을 외곽선만 표시함
set_line_width(m_htDisp, 1); //
굵기선택
set_draw(m_htDisp, "margin"); // 외곽만표시
set_color(m_htDisp, "blue"); // 표시색상 변경
disp_obj(RegionTrans, m_htDisp); // 영역그리기
'1.소프트웨어 이야기 > 02.Vision(Image Processing)' 카테고리의 다른 글
Halcon 사용 예제 - 팁의 일부 마크 중심에서 떨어진 값 구하기 (0) | 2009.02.25 |
---|---|
Halcon 사용 예제 - 사각형 마크 중심에서 떨어진 값 구하기 (0) | 2009.02.25 |
Halcon 함수 사용 방법 (0) | 2009.02.25 |