게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
Opencv MFC 질문 드립니다.
게시물ID : computer_349094짧은주소 복사하기
작성자 : Yoon999
추천 : 1
조회수 : 398회
댓글수 : 2개
등록시간 : 2017/08/11 16:42:44
옵션
  • 본인삭제금지

Opencv MFC를 공부중인데 간단하게 버튼을 눌러 이미지 두개 파일을 불러와서 템플릿 매칭하는 프로그램을 짜고있습니다.

총 3개의 버튼으로 구성되어 있고 각각 이미지 로드1, 로드2, 템플릿매칭

이렇게 구성되어 있습니다.

아래는 버튼 부분의 구문 입니다.


이미지 불러오기는 잘 됩니다.

그러나 템플릿 매칭 버튼을 누르면 프로그램이 꺼지고


+  exc {msg={cstr_=0x000001f0f6af2644 "C:\\opencv3.2.0_source\\opencv-3.2.0\\modules\\imgproc\\src\\templmatch.cpp:664: error: (-215) corrsize.height <= img.rows + templ.rows - 1 && corrsize.width <= img.cols + templ.cols - 1 in function cv::cro... ...} ...} const cv::Exception &
라는 에러가 뜹니다.


아래의 녹색부분에 직접 이미지 파일경로를 쓰면 제대로 동작합니다.

아마 녹색부분 변수 때문인것 같은데 어떻게 바꿔야할지 몰라

점심먹고 지금까지 검색해봐도 답이 나오질 않아 여기에 글을 씁니다.

어떻게 수정해야 할까요?


void CMFCApplication3Dlg::OnBnClickedLoad1()
{
 // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

 char szFilter[] = "Image (*.BMP, *.GIF, *.JPG, *.PNG) | *.BMP;*.GIF;*.JPG;*.PNG;*.bmp;*.gif;*.jpg;*.png | All Files(*.*)|*.*||";
 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, AfxGetMainWnd());
 if (dlg.DoModal() == IDOK)
 {
  CString cstrImgPath1 = dlg.GetPathName();
  //AfxMessageBox(cstrImgPath1);

  Mat src1 = imread(string(cstrImgPath1));
  DisplayImage(IDC_PIC1, src1);
 }
}

void CMFCApplication3Dlg::OnBnClickedLoad2()
{
 // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

 char szFilter[] = "Image (*.BMP, *.GIF, *.JPG, *.PNG) | *.BMP;*.GIF;*.JPG;*.PNG;*.bmp;*.gif;*.jpg;*.png | All Files(*.*)|*.*||";
 CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, AfxGetMainWnd());
 if (dlg.DoModal() == IDOK)
 {
  CString cstrImgPath2 = dlg.GetPathName();
  //AfxMessageBox(cstrImgPath2);

  Mat src2 = imread(string(cstrImgPath2));
  DisplayImage(IDC_PIC2, src2);
 }
}


void CMFCApplication3Dlg::OnBnClickedTemplate()
{
 Mat img = imread(string(cstrImgPath1));
 Mat templ = imread(
string(cstrImgPath2));
 img.copyTo(img_display);
 Mat img_display;
 int result_cols = img.cols - templ.cols + 1;
 int result_rows = img.rows - templ.rows + 1;
 result.create(result_rows, result_cols, CV_32FC1);
// matchTemplate(img, templ, result, TM_CCOEFF_NORMED);
// normalize(result, result, 0, 1, NORM_MINMAX, -1, Mat());
// minMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc, Mat());
// matchLoc = maxLoc;
// rectangle(img_display, matchLoc, Point(matchLoc.x + templ.cols, matchLoc.y + templ.rows), Scalar::all(100), 2, 8, 0);
//
// DisplayImage(IDC_PIC3, img_display);
}

꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호