代码一:直接去文件夹读取
參數:
PathName ,为图片文件路径,注意路径类型为CString
PWnd,为待显示的picture控件id
// 在指定控件上显示牌
void BeginGame::showPic(CString pathName, CWnd* pWnd)
{
CImage myImage;
myImage.Load(pathName);
CRect rect;
CDC* pDC = pWnd->GetDC();
//第1个控件
pWnd->GetClientRect(&rect); //取得客户区尺寸
pDC->SetStretchBltMode(STRETCH_HALFTONE); //保持图片不失真
myImage.Draw(pDC->m_hDC, rect); //已控件尺寸大小来绘图
ReleaseDC(pDC);
myImage.Destroy();
}
通过opencv 的 Mat 转成CImage函数
void BeginGame::OnBnClickedButton3()
{
Mat mat = imread("1.jpg");
CImage cImage;
//create new CImage
int width = mat.cols;
int height = mat.rows;
int channels = mat.channels();
cImage.Destroy(); //clear
cImage.Create(width, height, 8 * channels); //默认图像像素单通道占用1个字节
//copy values
uchar* ps;
uchar* pimg = (uchar*)cImage.GetBits(); //A pointer to the bitmap buffer
int step = cImage.GetPitch();
for (int i = 0; i < height; ++i)
{
ps = (mat.ptr<uchar>(i));
for (int j = 0; j < width; ++j)
{
if (channels == 1) //gray
{
*(pimg + i * step + j) = ps[j];
}
else if (channels == 3) //color
{
for (int k = 0; k < 3; ++k)
{
*(pimg + i * step + j * 3 + k) = ps[j * 3 + k];
}
}
}
}
CWnd* pWnd = GetDlgItem(Test_PIC);
CRect rect;
CDC* pDC = pWnd->GetDC();
//第1个控件
pWnd->GetClientRect(&rect); //取得客户区尺寸
pDC->SetStretchBltMode(STRETCH_HALFTONE); //保持图片不失真
cImage.Draw(pDC->m_hDC, rect); //已控件尺寸大小来绘图
ReleaseDC(pDC);
cImage .Destroy();
}