게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
OpenCV관련 재질문 드립니다..
게시물ID : programmer_21852짧은주소 복사하기
작성자 : 훗날닭집사장(가입:2011-11-03 방문:1679)
추천 : 0
조회수 : 286회
댓글수 : 3개
등록시간 : 2017/12/10 23:56:17
옵션
  • 본인삭제금지
아무리 봐도 해결책을 못찾아 결국 다시 찾아왔습니다...ㅜㅅㅜ
 
MFC랑 연계한건데, 주요 함수만 긁어오면

void COpenCV_MFCDlg::OnPaint()
{
 if (IsIconic())
 {
  ....
 }
 else
 {
  if(m_pImage)
  {
   CDC* pDC;
   CRect rect;
   pDC = m_stDisplay.GetDC();
   m_stDisplay.GetClientRect(&rect);
   m_cImage.CopyOf(m_pImage);
   m_cImage.DrawToHDC(pDC->m_hDC, rect);
   ReleaseDC(pDC);
  }
  CDialogEx::OnPaint();
 }
}

요놈과

void COpenCV_MFCDlg::OnBnClickedButton3()
{
 if(m_pImage != NULL)
  cvReleaseImage(&m_pImage);
 
 m_pImage = cvLoadImage("LS.jpg", -1);
 
 Invalidate(FALSE);
}

이 방법으로 버튼을 누르면 Dialog에 이미지를 출력하도록 해줘씀다.



그리고

void COpenCV_MFCDlg::OnBnClickedCheck1()
{
 if(!m_bBinarize)
  cvNamedWindow("BINARY",0);
 else
  cvDestroyWindow("BINARY");
 m_bBinarize = !m_bBinarize;
 UpdateData(FALSE);
}

이 방법으로, 체크박스에 체크를 하면 새로운 윈도우 창을 생성하도록 해주었지요.

새로운 윈도우창에 무엇을 내보낼거냐?

바로 이진화 시킨 이미지를 출력하려고 하는데요..

void COpenCV_MFCDlg::OnTimer(UINT_PTR nIDEvent)
{
 if(m_bBinarize)
 {
  IplImage* gray = cvCreateImage(cvGetSize(m_pImage), IPL_DEPTH_8U, 1);
  cvCvtColor(m_pImage, gray, CV_RGB2GRAY);
  cvThreshold(gray, gray, 127.0, 255.0, CV_THRESH_OTSU);
  cvShowImage("BINARY", gray);
  cvReleaseImage(&gray);
 }
 
 Invalidate(FALSE);
 CDialogEx::OnTimer(nIDEvent);
}

이렇게 해줬더니, 새로운 윈도우창은 뜨는데 새로운 윈도우 창에 이진화한 이미지가 안뜨네요..

왜그런걸까요 ㅠ_ㅠ

전체 추천리스트 보기
댓글쓰기
리스트 페이지로
데이터절약모드
◀뒤로가기
PC버전
맨위로▲
공지 운영 게시판요청 자료창고