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
[75154] Re:안녕하세요. Matrox Mil 관련 질문 있습니다.
소이야놀자 [] 5043 읽음    2018-10-30 22:01
if (MappAlloc (M_DEFAULT, &m_MilApp) == M_NULL)
    return false;

if (MsysAlloc (M_SYSTEM_DEFAULT, M_DEF_SYSTEM_NUM, M_SETUP, &m_MilSystem) == M_NULL)
    return false;

MappControl(m_MilApp, M_ERROR, M_PRINT_DISABLE);

보드없이 Mil만 사용하고자 할때,  전 위와 같이 사용하고 있습니다.
<






SHAWN 님이 쓰신 글 :
: 안녕하세요. 요즘 Matrox Mil을 공부하고 있는데요.
:
: 관련 예제코드를 학습하는데 예제코드의 결과값이 안나와서
:
: MappAllocDefault라는 함수를 제거하고
:
: Application, System, Image ID값을 각각 할당 받게해서 바꿔서 했습니다.
:
: 예를들어,
: MappAllocDefault(M_SETUP, &MilApplication, &MilSystem, M_NULL, M_NULL, M_NULL);  //이 함수를
:
: MappAlloc(M_SETUP, &MilApplication);                                                                      //이 두가지
: MsysAlloc(M_DEF_SYSTEM_TYPE, M_DEF_SYSTEM_NUM, M_SETUP, &MilSystem);         //함수로
:
: 이랬더니 비록 application id는 0이지만 system id값을 할당 받아서
:
: MbufRestore 이 함수를 호출했습니다. 근데 계속 여기서 access violation이 발생하네요.....(error 이미지 업로드했습니다.)
:
: 이유를 잘 모르겠어서 질문을 올립니다.
:
: 코딩 환경은 XE1에 mil 8.0입니다. 그리고 제가만든 코드와 원본 예제코드를 올리겠습니다.
:
: //저의 코드
:
: #define GRID_IMAGE_FILE_EX2                 ".\\Images\\CalGrid.mim"
: #define BOARD_IMAGE_FILE_EX2                ".\\Images\\GenBoard.mim"
:
: #define GRID_OFFSET_X_EX2                   0
: #define GRID_OFFSET_Y_EX2                   0
: #define GRID_OFFSET_Z_EX2                   0
: #define GRID_ROW_SPACING_EX2                1
: #define GRID_COLUMN_SPACING_EX2             1
: #define GRID_ROW_NUMBER_EX2                 18
: #define GRID_COLUMN_NUMBER_EX2              25
:
: #define MEAS_BOX_POS_X_EX2                     55
: #define MEAS_BOX_POS_Y_EX2                  24
: #define MEAS_BOX_WIDTH_EX2                  7
: #define MEAS_BOX_HEIGHT_EX2                 425
:
: #define APPROXIMATE_STRIPE_WIDTH_EX2        425
: #define M_WIDTH_WEIGHT_FACTOR_EX2            98
:
: void __fastcall TfrmVisionTestMilEx::ExampleCalibration(void)
: {
:     MIL_ID MilApplication;
:     MIL_ID MilSystem;
:     MIL_ID MilImage;
:     MIL_ID MilCalibration;
:     MIL_ID MeasMarker;
:
:     double WorldWidth;
:
:     /*Allocate defaults*/
:     //MappAllocDefault(M_SETUP, &MilApplication, &MilSystem, M_NULL, M_NULL, M_NULL);
:     MappAlloc(M_SETUP, &MilApplication);
:     MsysAlloc(M_DEF_SYSTEM_TYPE, M_DEF_SYSTEM_NUM, M_SETUP, &MilSystem);
:
:     /*Restore an image of a grid grabbed with a camera with severe lens aberration into an automatically allocated image buffer.*/
:     MbufRestore(GRID_IMAGE_FILE_EX2, MilSystem, &MilImage);
:
:     /*Allocate a camera calibration object*/
:     McalAlloc(MilSystem, M_DEFAULT, M_DEFAULT, &MilCalibration);
:
:     /* Calibrate the camera with the image of the grid*/
:     /* and its world description.*/
:     McalGrid(MilCalibration, MilImage,
:             GRID_OFFSET_X_EX2, GRID_OFFSET_Y_EX2, GRID_OFFSET_Z_EX2,
:             GRID_ROW_NUMBER_EX2, GRID_COLUMN_NUMBER_EX2, GRID_ROW_SPACING_EX2, GRID_COLUMN_SPACING_EX2,
:             M_DEFAULT, M_DEFAULT);
:
:     /*Load an image of a board grabbed with a camera with severe lens aberration and associate the calibration to the image.*/
:     MbufLoad(BOARD_IMAGE_FILE_EX2, MilImage);
:     McalAssociate(MilCalibration, MilImage, M_DEFAULT);
:
:     /*Allocate a measurement marker to perform measurement on the calibrated image in "Real world" unit*/
:     MmeasAllocMarker(MilSystem, M_STRIPE, M_DEFAULT, &MeasMarker);
:
:     /*Set the marker measurement box*/
:     MmeasSetMarker(MeasMarker, M_BOX_ORIGIN, MEAS_BOX_POS_X_EX2, MEAS_BOX_POS_Y_EX2);
:     MmeasSetMarker(MeasMarker, M_BOX_SIZE, MEAS_BOX_WIDTH_EX2, MEAS_BOX_HEIGHT_EX2);
:
:     /*Set marker orientation.*/
:     MmeasSetMarker(MeasMarker, M_ORIENTATION, M_HORIZONTAL, M_NULL);
:
:     /*Set marker approximative width and the associated weight factor.*/
:     MmeasSetMarker(MeasMarker, M_WIDTH, APPROXIMATE_STRIPE_WIDTH_EX2, M_NULL);
:     MmeasSetMarker(MeasMarker, M_WEIGHT_FACTOR+M_WIDTH, M_WIDTH_WEIGHT_FACTOR_EX2, M_NULL);
:
:     /*Find the stripe(2 board edges) in the calibrated image and measure its width in "real world" unit.*/
:     MmeasFindMarker(M_DEFAULT, MilImage, MeasMarker, M_WIDTH);
:
:     /*Get the world width of the marker.*/
:     MmeasGetResult(MeasMarker, M_WIDTH, &WorldWidth, M_NULL);
:
:     /*Show measurement result.*/
:     UnicodeString strLog;
:     strLog.sprintf(L"The board width is %8.4lf centimeters.", WorldWidth);
:     Log->Lines->Add(strLog);
:
:     /*Free all allocations*/
:     MmeasFree(MeasMarker);
:     McalFree(MilCalibration);
:     MbufFree(MilImage);
:     MappFreeDefault(MilApplication, MilSystem, M_NULL, M_NULL, M_NULL);
: }
:
: //원본코드 (c++ 코드)
:
: /* Regular includes. */
: #include <mil.h>
: #include <stdio.h>
: /* Source image files specification. */
: #define GRID_IMAGE_FILE "CalGrid.mim"
: #define BOARD_IMAGE_FILE "GenBoard.mim"
: /* World description of the calibration grid. */
: #define GRID_OFFSET_X 0
: #define GRID_OFFSET_Y 0
: #define GRID_OFFSET_Z 0
: #define GRID_ROW_SPACING 1
: #define GRID_COLUMN_SPACING 1
: #define GRID_ROW_NUMBER 18
: #define GRID_COLUMN_NUMBER 25
: /* Measurement box specification */
: #define MEAS_BOX_POS_X 55
: #define MEAS_BOX_POS_Y 24
: #define MEAS_BOX_WIDTH 7
: #define MEAS_BOX_HEIGHT 425
: /* Specification of the stripe constraints. */
: #define APPROXIMATE_STRIPE_WIDTH 425
: #define M_WIDTH_WEIGHT_FACTOR 98
: /* Main application function */
: void main()
: {
:     MIL_ID MilApplication, /* Application identifier. */
:     MilSystem, /* System identifier. */
:     MilImage, /* Image buffer identifier. */
:     MilCalibration, /* Calibration identifier. */
:     MeasMarker, /* Measurement marker identifier. */
:     double WorldWidth;
:     /* Allocate defaults */
:     MappAllocDefault(M_SETUP, &MilApplication, &MilSystem, M_NULL, M_NULL, M_NULL);
:     /* Restore an image of a grid grabbed with a camera with severe lens aberration into an automatically allocated image buffer.
:     */
:     MbufRestore(GRID_IMAGE_FILE, MilSystem, &MilImage);
:     /* Allocate a camera calibration object. */
:     McalAlloc(M_DEFAULT, M_DEFAULT, &MilCalibration);
:     /* Calibrate the camera with the image of the grid
:     * and its world description.
:     */
:     McalGrid(MilCalibration, MilImage,
:     GRID_OFFSET_X, GRID_OFFSET_Y, GRID_OFFSET_Z, GRID_ROW_NUMBER, GRID_COLUMN_NUMBER,
:     GRID_ROW_SPACING, GRID_COLUMN_SPACING, M_DEFAULT, M_DEFAULT);
:     /* Load an image of a board grabbed with a camera with severe lens aberration and associate the calibration to the image. */
:     MbufLoad(BOARD_IMAGE_FILE, MilImage);
:     McalAssociate(MilCalibration, MilImage, M_DEFAULT);
:     /* Allocate a measurement marker to perform measurement on the calibrated image in "real world" unit. */
:     MmeasAllocMarker(MilSystem, M_STRIPE, M_DEFAULT, &MeasMarker);
:     /* Set the marker measurement box. */
:     MmeasSetMarker(MeasMarker, M_BOX_ORIGIN, MEAS_BOX_POS_X, MEAS_BOX_POS_Y);
:     MmeasSetMarker(MeasMarker, M_BOX_SIZE, MEAS_BOX_WIDTH, MEAS_BOX_HEIGHT);
:     /* Set marker orientation. */
:     MmeasSetMarker(MeasMarker, M_ORIENTATION, M_HORIZONTAL, M_NULL);
:     /* Set marker approximative width and the associated weight factor. */
:     MmeasSetMarker(MeasMarker, M_WIDTH, APPROXIMATE_STRIPE_WIDTH, M_NULL);
:     MmeasSetMarker(MeasMarker, M_WEIGHT_FACTOR+M_WIDTH, M_WIDTH_WEIGHT_FACTOR, M_NULL);
:     /* Find the stripe (2 board edges) in the calibrated image and measure its width in "real world" unit.
:     */
:     MmeasFindMarker(M_DEFAULT, MilImage, MeasMarker, M_WIDTH);
:     /* Get the world width of the marker. */
:     MmeasGetResult(MeasMarker, M_WIDTH, &WorldWidth, M_NULL);
:     /* Pause to show the measurement result. */
:     printf("The board width is %8.4lf centimeters.\n", WorldWidth);
:     printf("Press <Enter> to end.\n\n");
:     getchar();
:     /* Free all allocations */
:     MmeasFree(MeasMarker);
:     McalFree(MilCalibration);
:     MbufFree(MilImage);
:     MappFreeDefault(MilApplication, MilSystem, M_NULL, M_NULL, M_NULL);
: }
:
: 아낌 없는 조언 부탁드립니다.

+ -

관련 글 리스트
75153 안녕하세요. Matrox Mil 관련 질문 있습니다. SHAWN 4152 2018/10/29
75154     Re:안녕하세요. Matrox Mil 관련 질문 있습니다. 소이야놀자 5043 2018/10/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.