본 프로그램은 검사 장비를 위한 기본 프레임 소스 입니다. 완성되지 않은 프레임만 있는 소스입니다. 현재 USB 카메라를 Start/Stop 할 수 있으며, Bmp 파일을 Load/Save 할 수 있습니다. 그럼 자유롭게 이용하세요. (2016.5.25, C.H.Han)
- 개발 버전: vs 2013
- 카메라 입력: Video for Windows (VFW)
- OpenCV 사용안함
- usb 카메라 start/stop, bitmap load/save 기능 구현
- 검사 Framework 구현 (프로그램 구조)
- 기타 기능은 미구현, 각자 구현해 보세요.
1. Program source file
- QInspProg.cpp/.h : 기본 프로그램 App
- QInspProgDlg.cpp/.h : 기본 프로그램 Dlg
- ImageProcess.cpp/.h : 영상처리 소스
- InspBlackDlg.cpp/.h : 블랙 결함 검사 Dialog
- SimpleBmp.cpp/.h : 비트맵 처리 클래스
메인 다이얼로그 TabControl내에 검사 다이얼로그들... 영상처리 알고리즘
--------------------- ---------------------- ------------------ --------------------------
QInspProgDlg.cpp InspBlackDlg.cpp ... ImageProcess.cpp
CQInspProgDlg CInspBlackDlg 기타 추가 Dialog BlackDefectAlgorithm()
BlackDefectInspection() OnBnClickedButton1()
2. 프로그램 사용법
1) TabDialog를 추가해서 검사기능(Black Defect 등)을 추가한다.
- Resouce에서 다이얼로그를 만들고, 클래스를 추가 생성 (style: child, no border). Black 검사인 경우는 CInspBlackDlg 클래스를 추가 했다.
- BOOL CQInspProgDlg::OnInitDialog() 에서 Create() 한다.
// 첫번째 대화상자 생성
m_pInspBlackDlg = new CInspBlackDlg;
m_pInspBlackDlg->Create(IDD_BLACK, &m_InspTab);
m_pInspBlackDlg->GetWindowRect(&rect);
m_pInspBlackDlg->MoveWindow(5, 40, rect.Width(), rect.Height());
m_pInspBlackDlg->ShowWindow(SW_SHOW); //대화 상자 숨기기
m_pInspBlackDlg->m_ParentDlg = this; // 부모 클래스 포인터
- 결함 검사 함수를 작성한다. 여기서 사용하는 영상처리 함수들은 ImageProcess.cpp/.h에 선언한다.
// Black 결함 검사 전체 함수
void CQInspProgDlg::BlackDefectInspection()
{
CArray <ErrorInfo, ErrorInfo &> errArr;
// Black Defect 검사
BlackDefectAlgorithm(pRGBImageBuffer, &errArr);
// 결과를 list control에 저장
...
// 그래프 그리기
...
// 프로세스 정보에 완료메세지 추가
m_list_pi.AddString(_T("Black Defect 검사가 완료되었습니다."));
//AfxMessageBox(_T("Black Defect 검사가 완료되었습니다."));
}
- 검사 다이얼로그에서 버튼 클릭시 영상처리를 위해 예를 들면, m_Parent->BlackDefectInspection() 을 실행한다.
void CInspBlackDlg::OnBnClickedButton1()
{
m_ParentDlg->BlackDefectInspection();
}
2) ImageProcess.cpp와 *.h에 영상처리 함수를 추가한다. 예를 들어 Black Defect 검사 알고리즘 함수를 작성하면 다음과 같은 형식으로 작성한다.
#include "StdAfx.h"
#include "ImageProcess.h"
// Black Defect 검사 알고리즘 함수
// BYTE* pInBuff: 입력 영상
// CArray <ErrorInfo, ErrorInfo &> errArr: 출력 에러 정보 배열
void BlackDefectAlgorithm(BYTE* pInBuff, CArray <ErrorInfo, ErrorInfo &> *errArr)
{
// 결함 검사 알고리즘 구현
...
// 에러정보 설정
ErrorInfo er;
er.x = 10;
er.y = 50;
er.size = 500;
er.strEtc = _T("Black Defects");
// 정보 추가
errArr->Add(er);
}
3. 소스
QInspect_Program_v01.zip (현재 버전 v0.1 초기버전 입니다. 2015. 5.26)
4. 결과 영상

추가 수정 버전에서는 Black defect을 검출한다. 현재 이소스는 비공개로 합니다.
