1.类型:HBITMAP、CBitmap、CImage、Mat(Open cv)、HObject(Halcon)
2.注意图像单通道与三通道的问题
3.实现类
// Bmp.h : 获取bmp图片头文件
//
#pragma once
#include<vector>
#include"highgui.h"
#include "HalconCpp.h"
using namespace std;
using namespace cv;
using namespace HalconCpp;
class CBmp
{
//单例模式
private:
CBmp(CString* dir, int length);//构造函数
CBmp(const CBmp &);
CBmp& operator = (const CBmp &);
public:
static CBmp *Instantialize(CString* dir, int length);
static CBmp *pInstance;
//-----------------------------------------------------------------------
public:
~CBmp(void);
//成员变量
CBitmap m_bitmap; //创建位图对象
CImage m_image; //创建CImage
Mat m_mat; //创建opencv Mat
HObject m_object; //创建Halcon HObject
//成员函数
void GetPic(int type); //获取图片
void ShowPic(CWnd *pWnd); //用来显示指定图片的函数
void TraverseDir(CString& dir, vector<CString>& vec); //获取文件夹所有路径
bool HBitmapToMat(HBITMAP& _hBmp,Mat& _mat); //HBitmapToMat转换
void MatToCImage(Mat& mat, CImage& cimage); //MatToCImage转换
void CImageToMat(CImage& cimage, Mat& mat); //CImageToMat转换
void dev_open_window_fit_image (HObject ho_Image, HTuple hv_Row, HTuple hv_Column,
HTuple hv_WidthLimit, HTuple hv_HeightLimit, HTuple *hv_WindowHandle);//独立窗口显示HObject图片
CWnd *m_pWnd; ///< 显示图像窗口(控件)指针
HDC m_hDC; ///< 绘制图像DC句柄
vector<CString> *paths; //存储文件夹所有图片路径
int *index; //图片路径标识
};
// Bmp.cpp : 获取bmp图片实现类
//
#include "stdAfx.h"
#include "Bmp.h"
#include "MyNewDlg.h "
//指针赋0,就是不指向任何对象,相当于NULL
CBmp* CBmp::pInstance = 0;
CBmp* CBmp::Instantialize(CString* dir, int length)
{
if(pInstance == NULL)
{
pInstance = new CBmp(dir, length);
}
return pInstance;
}
CBmp::CBmp(CString* dir, int length)
: index(new int[length]),
paths(new vector&l