C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55477] Re:Cognex 비젼 OCX를 사용에 문의 드립니다.
온리 [promatos] 2497 읽음    2008-12-18 17:22
이길남.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가 충돌이 나더군요.  전 그냥 관련된것은 사용하지 않아서 주석처리후 사용했습니다.

+ -

관련 글 리스트
55270 Cognex 비젼 OCX를 사용에 문의 드립니다. 이길남.HoPe 2040 2008/11/25
55477     Re:Cognex 비젼 OCX를 사용에 문의 드립니다. 온리 2497 2008/12/18
55478         Re:Re:Cognex 비젼 OCX를 사용에 문의 드립니다. 이길남.HoPe 2756 2008/12/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.