아무리 봐도 해결책을 못찾아 결국 다시 찾아왔습니다...ㅜㅅㅜ
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);
}
이렇게 해줬더니, 새로운 윈도우창은 뜨는데 새로운 윈도우 창에 이진화한 이미지가 안뜨네요..
왜그런걸까요 ㅠ_ㅠ