· 톺아보기

컴퓨터

MFC] picture control 이미지 출력 깨짐 문제

치킨엔맥주 · · 수정

조회 11,039 · 공감 0 · 댓글 2

안녕하세요 opencv를 mfc에서 구현하는것을 공부하다가 


문제점이 생겨 글을 남깁니다.


이미지 불러오기를 통해 이미지를 picture control에 리사이즈해 출력을 하면 


아래 사진과 같이 이미지가 깨져 나옵니다.

imshow로 새창에서 열어보면 정상적인 이미지가 출력되는반면

picture control상에서는 깨져서 보이네요...

관련정보를 찾다가 나오질 않아 글을 올리게 되었습니다.


아래 현상 사진과 코드 첨부합니다.


봐주셔서 감사합니다.

 


void COpenCVTest1Dlg::OnBnClickedBtnTest()
{
 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)
 {
  cstrtargetPath1 = dlg.GetPathName();
  src1 = imread(string(cstrtargetPath1));


  // resize image
  Size dSize;
  dSize.width = m_src1.cols;
  dSize.height = m_src1.rows;
  resize(src1, m_src1, dSize, 0, 0, INTER_LINEAR);
  imshow("Test2", m_src1);

  // Mat to Bitmap        
  HDC hdc = GetDlgItem(IDC_PIC_TEST)->GetDC()->m_hDC;
  char m_chBmpBuf[2048];
  BITMAPINFO *m_pBmpInfo = 0;
  m_pBmpInfo = (BITMAPINFO *)m_chBmpBuf;
  m_pBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  m_pBmpInfo->bmiHeader.biWidth = m_src1.cols;
  m_pBmpInfo->bmiHeader.biHeight = -(m_src1.rows); // -를 넣지 않으면 x축이 반전되어 디스플레이 된다. 이미지는 정상적이므로 걱정하지 말자.
  m_pBmpInfo->bmiHeader.biBitCount = 24;
  m_pBmpInfo->bmiHeader.biPlanes = 1;
  m_pBmpInfo->bmiHeader.biCompression = BI_RGB;
  m_pBmpInfo->bmiHeader.biSizeImage = 0;
  m_pBmpInfo->bmiHeader.biXPelsPerMeter = 0;
  m_pBmpInfo->bmiHeader.biYPelsPerMeter = 0;
  m_pBmpInfo->bmiHeader.biClrUsed = 0;
  m_pBmpInfo->bmiHeader.biClrImportant = 0;
  StretchDIBits(hdc, 0, 0, m_src1.cols, m_src1.rows,
   0, 0, m_src1.cols, m_src1.rows,
   m_src1.data, m_pBmpInfo,
   DIB_RGB_COLORS, SRCCOPY);
  Invalidate(FALSE);

 }
}

** 이 게시판은 댓글이 달리면 게시물을 삭제할 수 없습니다. **
** 내용의 장기노출이 곤란한 경우 [수정]을 통해 내용을 변경하시기 바랍니다. **


댓글 2

  1. 파고스 ·
    이미지의 실제 width 가 잘못 설정된 것 아닐까요?
    또는 4-byte alignment 와 관련된 것도 같네요.

  2. 치킨엔맥주 ·
    사이즈 문제였습니다 덕분에 해결했습니다. 감사합니다!

아무거나질문 최근 글

아무거나질문 목록 더 보기