Flycapture SW 자료

Download Report

Transcript Flycapture SW 자료

Flycapture API
1.
2.
3.
4.
영상 획득
영상 저장
카메라 파라메터
커스텀 이미지
㈜ 싸이로드 사업팀 기술지원
SW Requirements
• MS Visual C++ Version 6.0
• Windows 2000 Service Pack 4
(Windows XP Service Pack 1 권장)
FC API Type Definitions
• FlycaptureContext
• FlycaptureImage
FC API Type Definitions
• FlycaptureContext
PGRFlycapture Library를 위한 Context Pointer
typedef void* FlycaptureContext
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];
}
Flycapture API Functions
• Construction/Destruction
flycaptureCreateContext
: FlyCaptureContext를 생성
flycaptureDestroyContext
: FlyCaptureContext를 Destroy
flycaptureInitialize
: 카메라와 FlyCaptureContext를 연결
flycaptureInitializePlus (External Function)
: 카메라와 FlyCaptureContext를 연결
(버퍼의 크기와 수를 설정할 수 있음)
Flycapture API Functions
• Control Functions
flycaptureStart
: 그랩 프로세스 시작
flycaptureStop
: 그랩 프로세스 종료
Flycapture API Functions
• Image Related Functions
flycaptureGrabImage
: 버퍼에서 가장 최근의 데이터를 획득
flycaptureGrabImage2
: 위의 함수와 같은 역할을 하지만 좀 더 쉽게 데이터를
획득 가능
flycaptureConvertImage
: 임의의 이미지 포맷을 다른 포맷으로 변경
• Other Functions
flycaptureBusEmulationCamera
: 1394 버스에 있는 카메라들의 정보를 획득.
flycaptureGetCamera
Property, Register
동작절차
flycaptureSetCamera
Property, Register
flycaptureCreateContext
flycaptureInitialize
flycaptureGrabImage
Memory
flycaptureStop
Context 생성
flycaptureStart
flycaptureDestroyContext
카메라로 부터 이미지 획득하는
프로세스 종료
Context Destroy
카메라와 Context 연결
FlycaptureContext
IEEE 1394 BUS
FlycaptureImage
buffer
Buffer에서 가장 최근 획득한 이
미지를
저장
IEEE FlyCaptureImage에
1394 BUS
카메라로 부터 이미지 획득하는
프로세스 시작
간단한 Grab Program
1. VC++ 설정
2. 코드, 순서도
Visual C++ Setting
라이브러리 링크
Project->Settings->Link탭 -> Object/Library modules 에
pgrflycapture.lib pgrflycapturegui.lib 추가
Visual C++ Setting
• 헤더파일 추가
#include "pgrerror.h“
#include "pgrflycapture.h“
#include "pgrcameragui.h“
#include "pgrflycaptureplus.h"
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);
}
Grab된 영상 출력
위의 코드에서 // image processing 부분에 아래와 같은 코드를 추가
FlyCaptureImage fImageRGB;
fImageRGB.pixelFormat=FLYCAPTURE_BGR;
fImageRGB.pData=new unsigned char[1024*768*3];
// fImageRGB 변수 선언
// fImageRGB의 픽셀포맷을 BGR형으로 선언
// 영상 저장 공간 확보
flycaptureConvertImage(fContext,&fImage.image,&fImageRGB); // 이전에 그랩된 영상을
fImageRGB의
// 픽셀 포맷
형태로 변환
StretchDIBits(
// StretchDIBits 함수를 통해 영상을 화면에 출력
pdc->m_hDC,
0,
768,
1024,
-768,
0,
0,
1024,
768,
cImg,
(LPBITMAPINFO)bmp,
DIB_RGB_COLORS,
SRCCOPY);
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);
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 등
Camera Parameter 변경
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모드를 사용하지 않는것으로 설정
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 등
Custom Image
ex) 위의 코드 //start 밑의 flycaptureStart() 함수를 아래와 같이 대체
flycaptureStartCustomImage(fContext,0,120,108,688,496,100,FLYCA
PTURE_MONO8);
// 이미지의 좌표(120,108)에서 가로 688, 세로 100의 영역을
ROI모드로 그랩. 픽셀포맷 MONO8