|
이길남.HoPe 님이 쓰신 글 :
: 안녕하세요.
:
: 다름이 아니오라 이번에 Cognex 비젼 라이브러리를 사용해보려고 하는데...
:
: OCX를 등록시켜도 컴포넌트가 생성되지 않습니다.. 흑흑...
:
: 제공해준 샘플 파일은 주로 비주얼 베이직으로 맹거져 있습니다.
:
: 비주얼 C++로 작성된 것이 몇개 있어서 확인해 보니,
:
: 화면에서 Import Library를 해서 바로 화면에 등록을 시켰더군요....
:
: 혹시 Cognex 비젼 라이브러리를 사용해 보신 고수님들 계시면
:
: 빌더나 델파이로 사용가능한지 문의 드립니다.
:
: 추운 겨울 감기 조심하십시요. ㅠ.ㅠ
//////////////////////////////////////////////////////////////////////////////////////
처음 쓰는 답변이라 허름합니다.
OCX 파일은 사용이 되지 않고요 TypeLibaray형태로 된 파일만 Import Libray 추가합니다.
예를 들면 TypeLibray형태로 된 CogBlobTypeLibrary 리스트를 추가하면
ActiveX Tab에 CogBlob, CogBolbTool 같은 컴포넌트가 생성됩니다.
OCX 파일은 Import Libray를 잘못시키고 rgr32svr로 강제로 등록시키면 VisionPro를 재 설치해야 합니다.
주의하세요... 제가 확인한 바로는 DisplayCtrl.ocx는 직접 등록해서 사용해도 이상이 없었습니다.
아래의 코드는 임의의 경로 이미지를 로드하여서 Blob으로 원형태를 찾는 코드입니다.
이미지파일에서는 8bit DIB 이미지만 로드 가능합니다.
AnsiString sTmp = "";
sTmp ="C:\\image5.bmp";
// Cogneximagefile_tlb::CogImageFileModeConstants iMode;
CogImageFileTool1->Operator->Open(WideString(sTmp.c_str()),cogImageFileModeRead);
// iMode = CogImageFileTool1->Operator->get_OpenMode();
CogImageFileTool1->Run();
CogDisplay1->Image = CogImageFileTool1->OutputImage;
CogDisplay1->Refresh();
CogBlobTool1->InputImage = CogImageFileTool1->OutputImage;
CogBlobTool1->Run();
// 해당 영역에 표시하는 내용과 Blob의 넓이와 X,Y 좌표 확인하는 방법....
for( int i=0; i < CogBlobTool1->Results->get_Blobs(true)->Count; i++)
{
if( ( CogBlobTool1->Results->get_Blobs(true)->get_Item(i)->Acircularity > 0.9 ) &&
( CogBlobTool1->Results->get_Blobs(true)->get_Item(i)->Acircularity < 1.1 ) )
{
sTmp.sprintf("%d",i);
CogDisplay1->StaticGraphics->Add(CogBlobTool1->Results->get_Blobs(true)->get_Item(i)->
CreateResultGraphics(cogBlobResultGraphicBoundary),WideString(sTmp.c_str()));
sTmp.sprintf("X : %02lf, Y : %02lf, Area : %02lf", CogBlobTool1->Results->get_Blobs(true)->get_Item(i)
->CenterOfMassX,CogBlobTool1->Results->get_Blobs(true)->get_Item(i)->CenterOfMassY,
CogBlobTool1->Results->get_Blobs(true)->get_Item(i)->Area );
ShowMessage(sTmp.c_str());
}
}
저도 하느라 고생을 해서 도움이 되었으면 합니다. 컴파일하는 도중에 RichEdit같은 컴포넌트를 사용하면
경우에 Byte가 충돌이 나더군요. 전 그냥 관련된것은 사용하지 않아서 주석처리후 사용했습니다.
|