MFC显示手机拍摄的图片,颜色异常

tiger波波 2019-03-22 09:54:55
大家好,我用MFC显示手机拍摄的图片时,颜色出现异常,请问怎么回事??

异常:


实际:



void CCircleRecognitionDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();

using namespace cv;

CRect rect;
int width, height;
BITMAPINFO bitmapInfo;
BITMAPINFOHEADER* bmiHeader;
Mat image = imread("D:\\image\\Debug\\01.jpg");

width = image.cols;
height = image.rows;

if (width % 4)
width = (width + 3) / 4 * 4;

cv::Size winSize(width, height);
cv::Mat cvImgTmp(winSize, CV_8UC3);
if (image.size() != winSize)
cv::resize(image, cvImgTmp, winSize);
else
cvImgTmp = image.clone();

GetDlgItem(IDC_STATIC_IMAGE)->GetClientRect(&rect);

bmiHeader = &bitmapInfo.bmiHeader;
bmiHeader->biSize = sizeof(BITMAPINFOHEADER);
bmiHeader->biWidth = cvImgTmp.cols;
bmiHeader->biHeight = -cvImgTmp.rows;
bmiHeader->biPlanes = 1;
bmiHeader->biBitCount = 24;
bmiHeader->biCompression = BI_RGB;
bitmapInfo.bmiHeader.biSizeImage = 0;
bmiHeader->biXPelsPerMeter = GetSystemMetrics(SM_CXSCREEN);
bmiHeader->biYPelsPerMeter = GetSystemMetrics(SM_CYSCREEN);
bmiHeader->biClrUsed = 0;
bmiHeader->biClrImportant = 0;

StretchDIBits(GetDlgItem(IDC_STATIC_IMAGE)->GetDC()->GetSafeHdc()
, 0, 0, std::min(rect.Width(), rect.Height()), std::min(rect.Width(), rect.Height())
, 0, 0, cvImgTmp.cols, cvImgTmp.rows,
cvImgTmp.data, &bitmapInfo, DIB_RGB_COLORS, SRCCOPY);
}
}

...全文
208 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger波波 2019-03-25
  • 打赏
  • 举报
回复
需要SetStretchBltMode设置拉伸模式
jsxyhelu2015 2019-03-22
  • 打赏
  • 举报
回复
mfc这块,我推荐:
《基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)持续更新》https://www.cnblogs.com/jsxyhelu/p/GOMFCTemplate2.html

4,246

社区成员

发帖
与我相关
我的任务
社区描述
OpenCV相关技术交流专区
计算机视觉人工智能opencv 技术论坛(原bbs) 广东省·深圳市
社区管理员
  • OpenCV
  • 幻灰龙
  • OpenCV中国团队
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

OpenCV中国团队官方博客:https://blog.csdn.net/opencvchina

试试用AI创作助手写篇文章吧