* Frame Grabber 정의 및 열기

사용 함수 원형

open_framegrabber (Name, HorizontalResolution, VerticalResolution, ImageWidth, ImageHeight, StartRow, StartColumn, Field, BitsPerChannel, ColorSpace, Generic, ExternalTrigger, CameraType, Device, Port, LineIn : AcqHandle )

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Name

이미지 인터페이스 명

File’

'Ginga++', 'TAG', 'TWAIN', .....

HorizontalResolution, VerticalResolution

원하는 이미지를 수집하는 해상도

1

1, 2, 4, 1600, 1280, 768, 640, 384, 320, 192, 160, -1

ImageWidth, ImageHeight

수집하는 이미지의 반환 크기

0

0, -1

StartRow, StartColumn

이미지 시작 위치

0

0, -1

Field

수집할 이미지 면적

‘default’

'first', 'second', 'next', 'interlaced', 'progressive'

BitsPerChannel

비트당 이미지 픽셀 수

-1

5, 8, 10, 12, 14, 16, -1

ColorSpace

이미지의 출력 색상 형식

‘default’

'gray', 'raw', 'rgb', 'yuv'

Generic

일반 매개 변수 특정 쿼리 사용시만

-1

 

ExternalTrigger

외부 트리거링 사용 여부

‘default’

'true', 'false', 'default'

CameraType

카메라 스펙

‘default’

'ntsc', 'pal', 'auto'

Device

이미지 수집 장치의 이름

-1

‘-1', '0', '1', '2', '3'

Port

이미지 수집 연결 포트 번호

-1

0,1,2,3,-1

LineIn

입력 라인(사용 될 경우만 사용)

-1

1, 2, 3, 4, -1

AcqHandle

그래버에 할당할 핸들 번호

 

 

 

사용 예시

// Select a suitable image acquisition interface name AcqName
info_framegrabber(AcqName,'port',Information,Values)
// Choose the port P and the input line L your camera is connected to
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,
                  'default','default','default',P,L,AcqHandle)
grab_image(Image,AcqHandle) 
close_framegrabber(AcqHandle)

 


 

* Frame Grabber 닫기

사용 함수 원형

close_all_framegrabbers();         모든 Frame Grabber를 닫는다

close_framegrabber(Acq Handle);      지정 Frame Grabber를 닫는다

 

매개변수 설명

B/D 핸들 or 매개변수 없음

 

사용 예시

close_all_framegrabbers();        

close_framegrabber(m_htAcqHandle);

 

* 이미지 채널별 접근

사용 함수 원형

get_image_pointer1 (Image, Pointer, Type, Width, Height)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

입력 이미지

File’

'Ginga++', 'TAG', 'TWAIN', .....

Pointer

수집된 이미지 데이터 포인터

없음

 

Type

이미지 타입

없음

int1, int2, uint2, int4, byte, rea', direction, cyclic, complex,  vector_field

Width, Height 

수집된 이미지 크기

0

0, -1

 

사용 예시

Hobject  Bild;
char     typ[128];
long     width,height;
unsigned char *ptr;
 
read_image(&Bild,"fabrik");
get_image_pointer1(Bild,(long*)&ptr,typ,&width,&height);

 

* 이미지 불러오기 (Grabber B/D 이용)

사용 함수 원형

grab_image (Image, Acq Handle)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

입력 이미지 저장값

없음

 

Acq Handle

Grabber B/D Handle

없음

 

 

사용 예시

// Select a suitable image acquisition interface name AcqName

info_framegrabber(AcqName,'port',Information,Values);

// Choose the port P and the input line L your camera is connected to

open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,

                  'default','default','default',P,L,AcqHandle);

grab_image(Image,AcqHandle);

close_framegrabber(AcqHandle);

 


 

* 이미지 불러오기 (File 불러오기 이용)

사용 함수 원형

read_image (Image, Filename)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

입력 이미지

없음

 

Filename

불러올 이미지 명

fabrik

monkey, fabrik, mreut

 

사용 예시

/* Reading an image: */

  read_image(Image,'monkey');

 

/* Reading 3 images into an image array: */

  read_image(Images,['ic_0','ic_1','ic_2']);

 

/* Setting of search path for images on '/mnt/images' and '/home/images': */

  set_system('image_dir','/mnt/images:/home/images');

 

* 이미지 저장하기

사용 함수 원형

read_image (Image, Format , FillColor, Filename)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

저장할 이미지

없음

 

Format

저장 형식

tiff

tiff, bmp, jpeg, ima, jpeg 100, jpeg 80, jpeg 60, jpeg 40, jpeg 20, jp2, jp2 50, jp2 40, jp2 30, jp2 20, png, png best, png fastest, png none

FillColor

픽셀당 채울 그레이 값

0

-1, 0, 255, 0xff0000, 0xff00

Filename

저장할 파일명

 

 

 

사용 예시

write_image(m_hoSource, "bmp", 0, a_Path.GetBuffer(0));

 

 


 

* 이미지 표시 영역 설정하기

사용 함수 원형

set_part (Window Handle, Row1, Column1, Row2, Column2)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Window Handle

표시할 윈도우 핸들 값

 

Long type

Row1, Column1

이미지 좌 상단 위치

0

 

Row2, Column2

이미지 우 하단 위치

512

Row2 >= Row1,
Column2 >= Column1

 

사용 예시

get_system('width',,Width);

get_system('height',Height);

set_part(WindowHandle,0,0,Height-1,Width-1);

disp_image(Image,WindowHandle);

draw_rectangle1(WindowHandle:Row1,Column1,Row2,Column2);

set_part(WindowHandle,Row1,Column1,Row2,Column2);

disp_image(Image,WindowHandle);

 

 

* 이미지 표시하기

사용 함수 원형

disp_obj (Image, Window Handle)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

표시할 이미지

없음

 

Window Handle

표시할 윈도우 핸들값

없음

 

 

사용 예시

/* Output of a gray image: */

read_image(Image1,'affe');

disp_obj(Image1, WindowHandle);

threshold(Image, Region, 0, 128);

disp_obj(Region, WindowHandle);

 


 

* 이미지 회전하기

사용 함수 원형

rotate_image (Input Image, Rotate Image, Phi, Interpolation)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Input Image

회전할 원 이미지

없음

 

Rotate Image

회전된 이미지

없음

 

Phi

회전 각도

90

90,180,270

Interpolation

보간 방법

constant

None, constant, weighted

 

사용 예시

read_image(Image,'monkey');

disp_image(Image,WindowHandle);

rotate_image(Image, RotImage, 270, ‘constant’);

disp_image(RotImage,WindowHandle);

 

 

* 표시된 이미지 정리하기

사용 함수 원형

clear_window (Window Handle)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Window Handle

표시할 윈도우 핸들값

없음

 

 

사용 예시

clear_window(WindowHandle);

 

* 표시할 윈도우 열기

사용 함수 원형

open_window (Row, Column, Width, Height, FatherWindow, Mode, Machine, Window Handle)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Row, Column

좌 상단 구석 위치

0

0 <= Row, 0 <= column

Width, Height

우 하단 구석 위치

256

0 <= Width, 0 <= Height

FatherWindow

부모 윈도우 값

0

 

Mode

윈도우 모드

vivisble

Visible, invisible, transparent, buffer

Machine

 

NULL

 

Window Handle

표시할 윈도우 핸들값

없음

 

 

사용 예시

open_window(0,0,400,-1,'root','visible','',WindowHandle);

read_image(Image,'fabrik');

disp_image(Image,WindowHandle);

write_string(WindowHandle,'File, fabrik.ima');

new_line(WindowHandle);

get_mbutton(WindowHandle,_,_,_);

set_lut(WindowHandle,'temperature');

set_color(WindowHandle,'blue');

write_string(WindowHandle,'temperature');

new_line(WindowHandle);

write_string(WindowHandle,'Draw Rectangle');

new_line(WindowHandle);

draw_rectangle1(WindowHandle,Row1,Column1,Row2,Column2);

set_part(Row1,Column1,Row2,Column2);

disp_image(Image,WindowHandle);

new_line(WindowHandle);

 


 

* 사용할 폰트 설정

사용 함수 원형

set_font(Window Handle, Font)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Window Handle

표시할 윈도우 핸들값

없음

Window Handle

Font

폰트 쿼리 값

없음

 

 

사용 예시

get_system ('operating_system', OS)

if (OS{0:2} = 'Win')

  set_font (WindowHandle, '-Courier New-18-*-*-*-*-1-')

else

  set_font (WindowHandle, '-*-courier-bold-r-normal--22-*-*-*-*-*-iso8859-1')

 

 

 

 


 

* 그레이 레벨 확장하기 (Opening과 비슷) –구멍 늘리기

사용 함수 원형

gray_dilation_shape(Hobject Image, Hobject *ImageMax, const HTuple &MaskHeight,
const HTuple &MaskWidth,const HTuple &MaskShape
)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

변환할 이미지 포인터

 

 

ImageMax

변환된 이미지가 저장될 곳

 

 

MaskHeight

마스크 가로 크기

11

3, 5, 7, 9, 11, 13, 15

MaskWidth

마스크 세로 크기

11

3, 5, 7, 9, 11, 13, 15

MaskShape

마스크 형태

‘Octagon’

'rectangle', 'rhombus', 'octagon'

 

사용 예시

gray_dilation_shape(m_hoSource, &ImageMax, 1.5, 1.5, "rectangle");    

 

 

 

* 그레이 레벨 축소하기 (Closing과 비슷) – 구멍 메우기

사용 함수 원형

gray_erosion_shape(Hobject Image, Hobject *ImageMax, const HTuple &MaskHeight,
const HTuple &MaskWidth,const HTuple &MaskShape
)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

변환할 이미지 포인터

 

 

ImageMax

변환된 이미지가 저장될 곳

 

 

MaskHeight

마스크 가로 크기

11

3, 5, 7, 9, 11, 13, 15

MaskWidth

마스크 세로 크기

11

3, 5, 7, 9, 11, 13, 15

MaskShape

마스크 형태

‘Octagon’

'rectangle', 'rhombus', 'octagon'

 

사용 예시

gray_erosion_shape(m_hoSource, &ImageMax, 1.5, 1.5, "rectangle");


 

* 경계 값으로 새 영역 구하기

사용 함수 원형

threshold (Image, Region, MinGray, MaxGray);

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Image

변환할 이미지

 

 

Region

경계선으로 구한 영역

 

 

MinGray

경계 값을 구할 최소값

128.0

0.0, 10.0, 30.0, 64.0, 128.0, 200.0, 220.0, 255.0

MaxGray

경계 값을 구할 최대값

255.0

0.0, 10.0, 30.0, 64.0, 128.0, 200.0, 220.0, 255.0

 

사용 예시

#include "HIOStream.h"

#if !defined(USE_IOSTREAM_H)

using namespace std;

#endif

#include "HalconCpp.h"

 

int main (int argc, char *argv[])

{

  if (argc != 4)

  {

    cout << "Usage : " << argv[0] << " 'image' MinGray MaxGray" << endl;

    return (-1);

  }

  HImage   image (argv[1]), Sobel;

  HWindow  win;

image.Display (win);

 

  int MinGray = atoi (argv[2]);

  int MaxGray = atoi (argv[3]);

 

  Sobel = image.SobelAmp ("sum_abs", 3);

 

  HRegionArray rand  = ((image >= MinGray) & (image <= MaxGray)).Skeleton();

  HRegionArray lines = rand.Connection();

  HRegionArray edges = lines.SelectShape("area", "and", 10.0, 10000000.0);

  edges.Display (win);

  win.Click ();

  return (0);

}


 

* 두 영역 합치기

사용 함수 원형

connection(Region, &ConnectedRegions);          

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Region

입력되는 영역값

 

 

ConnectedRegions

합칠 영역값

 

 

 

사용 예시

#include "HIOStream.h"

#if !defined(USE_IOSTREAM_H)

using namespace std;

#endif

#include "HalconCpp.h"

 

int main (int argc, char *argv[])

{

  HImage   image (argv[1]);

  HWindow  w;

  w.SetColored(12);

  HRegion Light = image >= 128;

  Light.Display(w);

  HRegionArray Many = Light.Connection();

  cout << "Nummber of regions after threshold = " << Many.Num();

  Many.Display(w);

}

 

* 일부 영역 선택하기

사용 함수 원형

select_shape(Hobject Regions, Hobject* SelectedRegions, const HTuple& Features, const HTuple& Operation, const HTuple& Min, const HTuple& Max)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Regions

선택할 영역

 

 

SelectedRegions

선택된 영역

 

 

Features

선택할 방법

"area"

"area", "row", "column", "width", "height", "row1", "column1", "row2", "column2", "circularity", "compactness", "contlength", "convexity", "rectangularity", "ra", "rb", "phi", "anisometry", "bulkiness", "struct_factor", "outer_radius", "inner_radius", "inner_width", "inner_height", "max_diameter", "dist_mean", "dist_deviation", "roundness", "num_sides", "orientation", "connect_num", "holes_num", "area_holes", "euler_number", …

Operation

집합 조건

"and"

"and", "or"

Min

선택할 최소 조건

150.0

0.0 ≤ Min ≤ 99999.0

Max

선택할 최대 조건

99999.0

0.0 ≤ Max ≤ 99999.0

 

사용 예시

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
 
int main ()
{
  HImage        img ("affe");
  HWindow       w;
  HRegionArray  reg  = img.Regiongrowing (3, 3, 5, 0);
  HRegion       circ = HRegion::GenCircle (100, 100, MinRadius);
  HRegionArray  seg  = reg.SelectShapeProto (circ, "fits", 0, 0);
  seg.Display (w);
  w.Click ();
  return(0);
} 

* 지정 영역을 원하는 형태로 변경하기

사용 함수 원형

shape_trans(Hobject Region, Hobject* RegionTrans, const HTuple& Type)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Region

바꾸자 하고자 하는 영역

 

 

RegionTrans

바꾼 후 영역

 

 

Type

영역을 변경할 모양

"convex"

"convex", "ellipse", "outer_circle", "inner_circle", "rectangle1", "rectangle2", "inner_rectangle1", "inner_center"

 

사용 예시

shape_trans(SelectedRegions, &RegionTrans, "rectangle1");                                           // 영역을변경


 

* 영역 일부 선택

사용 함수 원형

clip_region(Hobject Region, Hobject* RegionClipped, const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Region

선택하고자 하는 원 영역

 

 

RegionClipped

선택된 영역이 저장될 곳

 

 

Row1

자르고자 하는 좌측 Y 위치

0

0, 128, 200, 256

Column1

자르고자 하는 좌측 X 위치

0

0, 128, 200, 256

Row2

자르고자 하는 우측 Y 위치

256

128, 200, 256, 512

Column2

자르고자 하는 우측 X 위치

256

128, 200, 256, 512

 

사용 예시

clip_region(ConnectedRegions, &RegionClipped, 478, 578, 640, 796);                                // 찾을영역지정


 

* 구한 영역 개수 구하기

사용 함수 원형

count_obj(Hobject Objects, Hlong* Number)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Objects

영역 개수 구할 목표 영역

 

 

Number

구한 영역 개수가 저장될 곳

없음

 

 

사용 예시

count_obj(RegionTrans, &SelectNum);                                                // 영역 개수 구하기

 

 

* 자료형 변경하기

사용 함수 원형

tuple_int(const HTuple& T, Hlong* Int)   // 정수형

tuple_abs(const HTuple& T, double* Abs) // 절대값 나머지 실수도 이런 식의 함수를 사용

 

매개변수 설명

매개 변수

설명

기본값

권장 값

T

변환할 값

 

 

Int

변환 된 값이 저장 될 곳

 

 

 

사용 예시

tuple_int(SelectNum, &nNum);                                                       // 자료형 변경

 

 


 

* 라인 굵기 설정

사용 함수 원형

set_line_width(const HTuple& WindowHandle, const HTuple& Width)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

WindowHandle

라인 굵기 지정할 윈도우 핸들

 

 

Width

라인 굵기 값

1

(Width>=1) && (Width<=2000)

 

사용 예시

set_line_width(m_htDisp, 1);                                                                      // 선굵기

 

 

* 표시 색상 설정하기

사용 함수 원형

set_color(const HTuple& WindowHandle, const HTuple& Color)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

WindowHandle

윈도우 핸들

 

 

Color

표시할 색상

"white"

"black", "white", "red", "green", "blue", "cyan", "magenta", "yellow", "dim gray", "gray", "light gray", "medium slate blue", "coral", "slate blue", "spring green", "orange red", "orange", "dark olive green", "pink", "cadet blue"

사용 예시

set_color(WindowHandle,['red','green'])

disp_circle(WindowHandle,[100,200,300],[200,300,100],[100,100,100])

 

* 영역 표시 방법 설정

사용 함수 원형

set_draw(const HTuple& WindowHandle, const HTuple& Mode)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

WindowHandle

윈도우 핸들

 

 

Mode

영역 채우기 모드

"fill"

"fill", "margin"

 

사용 예시

set_draw(m_htDisp, "margin");                                              // margin 외곽만표시<-> fill (내부 칠하기)


 

* 영역 중심 구하기

사용 함수 원형

area_center(Hobject Regions, Hlong* Area, double* Row, double* Column)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

Regions

중심 값을 구하고자 하는 영역

 

 

Area

구한 중심 값이 저장될 영역

 

 

Row

중심값 세로 값이 저장될 공간

 

 

Column

중심값 가로 값이 저장될 공간

 

 

 

사용 예시

#include "HIOStream.h"
#if !defined(USE_IOSTREAM_H)
using namespace std;
#endif
#include "HalconCpp.h"
main()
{
  Tuple   area, row, column;
  HImage   img ("affe");
  HWindow  w;
  img.Display (w);
  w.Click ();
  HRegionArray   reg = (img >= 164).Connection ();
  reg.Display (w);
  w.Click ();
  area = reg.AreaCenter (&row, &column);
  for (int i = 0; i < reg.Num (); i++)
  {
    cout << "Row    [" << i << "]" << "= " << row[i].D ();
    cout << "\t\tColumn [" << i << "]" << "= " << column[i].D () << endl;
  }
  cout << "Total number of regions: " << reg.Num () << endl;
  return(0);
}

 

* 텍스트 위치 설정하기

사용 함수 원형

set_tposition(const HTuple& WindowHandle, const HTuple& Row, const HTuple& Column)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

WindowHandle

윈도우 핸들

 

 

Row

표시할 세로 위치

24

 

Column

표시할 가로 위치

12

 

 

사용 예시

set_tposition(m_htDisp, nZoomScale + 10, nZoomScale + 10);                        // 텍스트 표시 위치 설정

 

* 텍스트 쓰기

사용 함수 원형

write_string(const HTuple& WindowHandle, const HTuple& String)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

WindowHandle

윈도우 핸들

 

 

String

표시될 텍스트 값

"hello"

 

 

사용 예시

write_string(m_htDisp, "Left Camera 검사오류");                                              // 텍스트 표시 하기


 

* 사각영역 표시하기

사용 함수 원형

disp_rectangle1(const HTuple& WindowHandle, const HTuple& Row1, const HTuple& Column1, const HTuple& Row2, const HTuple& Column2)

 

매개변수 설명

매개 변수

설명

기본값

권장 값

WindowHandle

윈도우 핸들

 

 

Row1

좌 상단 세로 값

16

0, 64, 128, 256, 511

Column1

좌 상단 가로 값

16

0, 64, 128, 256, 511

Row2

우 하단 세로 값

48

0, 64, 128, 256, 511

Column2

우 하단 가로 값

48

0, 64, 128, 256, 511

 

사용 예시

set_color(WindowHandle,'green')

draw_region(MyRegion,WindowHandle)

smallest_rectangle1(MyRegion,R1,C1,R2,C2)

disp_rectangle1(WindowHandle,R1,C1,R2,C2).

+ Recent posts