Presentation is loading. Please wait.

Presentation is loading. Please wait.

영상 획득 영상 저장 카메라 파라메터 커스텀 이미지

Similar presentations


Presentation on theme: "영상 획득 영상 저장 카메라 파라메터 커스텀 이미지"— Presentation transcript:

1 영상 획득 영상 저장 카메라 파라메터 커스텀 이미지
Flycapture API 영상 획득 영상 저장 카메라 파라메터 커스텀 이미지 ㈜ 싸이로드 사업팀 기술지원

2 SW Requirements MS Visual C++ Version 6.0
Windows 2000 Service Pack 4 (Windows XP Service Pack 1 권장)

3 FC API Type Definitions
FlycaptureContext FlycaptureImage

4 FC API Type Definitions
FlycaptureContext PGRFlycapture Library를 위한 Context Pointer typedef void* FlycaptureContext

5 FC API Type Definitions
FlycaptureImage 이미지의 정보를 저장하는 구조체 struct FlycaptureImage { int iRows; // 이미지의 세로 픽셀수 int iCols; // 이미지의 가로 픽셀수 int iRowInc; // 바이트수/가로 FlyCaptureVideoMode videoMode; // 캡쳐되었을때 비디오모드 FlyCaptureTimestamp timeStamp; // 이미지의 타임스탬프 unsigned char* pData; // 실제 이미지데이터를 가르키는 포인터 bool bStippled; FlyCapturePixelFormat pixelFormat; unsigned long ulReserved[6]; }

6 Flycapture API Functions
Construction/Destruction flycaptureCreateContext : FlyCaptureContext를 생성 flycaptureDestroyContext : FlyCaptureContext를 Destroy flycaptureInitialize : 카메라와 FlyCaptureContext를 연결 flycaptureInitializePlus (External Function) : 카메라와 FlyCaptureContext를 연결 (버퍼의 크기와 수를 설정할 수 있음)

7 Flycapture API Functions
Control Functions flycaptureStart : 그랩 프로세스 시작 flycaptureStop : 그랩 프로세스 종료

8 Flycapture API Functions
Image Related Functions flycaptureGrabImage : 버퍼에서 가장 최근의 데이터를 획득 flycaptureGrabImage2 : 위의 함수와 같은 역할을 하지만 좀 더 쉽게 데이터를 획득 가능 flycaptureConvertImage : 임의의 이미지 포맷을 다른 포맷으로 변경 Other Functions flycaptureBusEmulationCamera : 1394 버스에 있는 카메라들의 정보를 획득.

9 동작절차 FlycaptureContext FlycaptureImage buffer
flycaptureGetCamera Property, Register flycaptureSetCamera Property, Register flycaptureCreateContext flycaptureInitialize flycaptureStart flycaptureGrabImage flycaptureStop flycaptureDestroyContext 카메라로 부터 이미지 획득하는 프로세스 종료 Context 생성 Memory Context Destroy 카메라와 Context 연결 FlycaptureContext FlycaptureImage buffer Buffer에서 가장 최근 획득한 이미지를 FlyCaptureImage에 저장 IEEE 1394 BUS IEEE 1394 BUS 카메라로 부터 이미지 획득하는 프로세스 시작

10 간단한 Grab Program VC++ 설정 코드, 순서도

11 Visual C++ Setting 라이브러리 링크
Project->Settings->Link탭 -> Object/Library modules 에 pgrflycapture.lib pgrflycapturegui.lib 추가

12 Visual C++ Setting 헤더파일 추가 #include "pgrerror.h“ #include "pgrflycapture.h“ #include "pgrcameragui.h“ #include "pgrflycaptureplus.h"

13 VC++ Code, Diagram void CGrabDlg::On?????() {
FlyCaptureContext fContext; FlyCaptureImage fImage; // initialize flycaptureCreateContext(&fContext); flycaptureInitialize(fContext,0); // start flycaptureStart(fContext,FLYCAPTURE_VIDEOMODE_ANY, FLYCAPTURE_FRAMERATE_ANY); // image grab flycaptureGrabImage2(fContext,&fImage); // image processing // stop flycaptureStop(fContext); // destroy flycaptureDestroyContext(fContext); }

14 Grab된 영상 출력 위의 코드에서 // image processing 부분에 아래와 같은 코드를 추가
FlyCaptureImage fImageRGB; // fImageRGB 변수 선언 fImageRGB.pixelFormat=FLYCAPTURE_BGR; // fImageRGB의 픽셀포맷을 BGR형으로 선언 fImageRGB.pData=new unsigned char[1024*768*3]; // 영상 저장 공간 확보 flycaptureConvertImage(fContext,&fImage.image,&fImageRGB); // 이전에 그랩된 영상을 fImageRGB의 // 픽셀 포맷 형태로 변환 StretchDIBits( // StretchDIBits 함수를 통해 영상을 화면에 출력 pdc->m_hDC, 0, 768, 1024, -768, cImg, (LPBITMAPINFO)bmp, DIB_RGB_COLORS, SRCCOPY);

15 Grab된 영상 저장 flycaptureSaveImage 함수 사용
flycaptureSaveImage(FlyCaptureContext context, const FlyCaptureImage * pImage, const char* pszPath, FlyCaptureImageFileFormat format) pszPath : 파일을 저장할 파일의 이름 format : 저장할 파일의 형식 FLYCAPTURE_FILEFORMAT_BMP - 비트맵 파일 FLYCAPTURE_FILEFORMAT_JPG - JPG 파일 FLYCAPTURE_FILEFORMAT_PGM - PGM 파일 FLYCAPTURE_FILEFORMAT_PNG -PNG 파일 FLYCAPTURE_FILEFORMAT_PPM - PPM 파일 FLYCAPTURE_FILEFORMAT_RAW - RAW 파일 ex) 이전 코드의 // image processing 부분에 아래와 같은 코드를 추가 flycaptureSaveImage(fContext,&fImage,"C:\\test.bmp",FLYCAPTURE_FILEFORMAT_BMP);

16 Camera Parameter 변경 flycaptureSetCameraProperty, flycaptureGetCameraProperty 함수 사용 flycaptureGetCameraProperty - 카메라 파라메터 값을 획득 flycaptureSetCameraProperty - 카메라 파라메터 값을 설정 카메라가 초기화된 후(flycaptureInitialize 함수가 수행된 후) 사용 가능 flycaptureGetCameraProperty(FlyCaptureContext context,FlyCaptureProperty cameraproperty, long* lValueA, long* lValueB, bool* bAuto); lValueA - 첫번째 인자값 lValueB - 두번째 인자값 bAuto - auto 모드 상태 (auto로 설정되어 있을 경우 카메라가 값을 자동으로 설정) cameraproperty – 획득할 카메라의 파라메터 FLYCAPTURE_GAIN FLYCAPTURE_SHUTTER FLYCAPTURE_BRIGHTNESS FLYCAPTURE_WHITE_BALANCE FLYCAPTURE_GAMMA 등

17 Camera Parameter 변경 ex) 위의 코드 //initialize 부분 끝에 다음과 같은 코드 추가
flycaptureSetCameraProperty(FlyCaptureContext context,FlyCaptureProperty cameraproperty, long lValueA, long lValueB, bool bAuto); lValueA - 첫번째 인자값 lValueB - 두번째 인자값 bAuto - auto 모드 상태 (auto로 설정되어 있을 경우 카메라가 값을 자동으로 설정) ex) 위의 코드 //initialize 부분 끝에 다음과 같은 코드 추가 long gainA=0; long gainB=0; bool gainAuto=0; flycaptureGetCameraProperty(m_flyCaptureContext,FLYCAPTURE_GAIN,&gainA,&gainB,&gainAuto); // 카메라에 설정된 Gain값을 획득 flycaptureSetCameraProperty(m_flyCaptureContext,FLYCAPTURE_GAIN,10,0,0); // Gain값을 10으로, Auto모드를 사용하지 않는것으로 설정

18 Custom Image Grab 프로세스를 시작할때, flycaptureStart함수 대신에 flycaptureStartCustomImage 함수를 사용하여 ROI, BINNING 기능 구현 flycaptureStartCustomImage(FlyCaptureContext context, unsigned int uiMode, unsigned int uiImagePosLeft, unsigned int uiImagePosTop, unsigned int uiWidth, unsigned int uiHeight float fBandWidth, FlyCapturePixelFormat format) uiMode - 카메라의 특정 모드(0: ROI, 1:BINNING) uiImagePosLeft, uiImagePosTop – 이미지의 왼쪽, 위의 위치 uiWidth, uiHeight – 이미지의 가로, 세로 fBandWidth – 전송하기위한 카메라의 최대 대역폭 fomat – 사용하려는 픽셀포맷 FLYCAPTURE_RAW8, FLYCAPTURE_RAW16 FLYCAPTURE_MONO8, FLYCAPTURE_MONO16 등

19 Custom Image ex) 위의 코드 //start 밑의 flycaptureStart() 함수를 아래와 같이 대체 flycaptureStartCustomImage(fContext,0,120,108,688,496,100,FLYCAPTURE_MONO8); // 이미지의 좌표(120,108)에서 가로 688, 세로 100의 영역을 ROI모드로 그랩. 픽셀포맷 MONO8


Download ppt "영상 획득 영상 저장 카메라 파라메터 커스텀 이미지"

Similar presentations


Ads by Google