使用halcon(版本10.0 64位)读入图像并进行显示,使用ChartAxis类实现图像直方图的显示?

来源:互联网 发布:云盘服务器架设php 编辑:程序博客网 时间:2024/06/05 10:53

1、使用halcon读入图像

CString strFilter(_T("图片(*.bmp;*.jpg)|*.BMP;*.JPG|所有文件(*.*)|*.*||"));
CFileDialog OpenDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,strFilter);
//通过打开对话框选择图片文件
int nFlags=OpenDlg.DoModal();
if(IDOK==nFlags)
{

CString m_strPath = OpenDlg.GetPathName();
USES_CONVERSION;
char* c_path = T2A(m_strPath);

                Hobject m_Image;
read_image(&m_Image,c_path);

                //图像格式转换,其中m_ImageCal的定义为LPBYTE m_ImageCal;m_Width,m_Height分别为图像的高度和宽度,注意:图像必须是灰度图,宽度必须是4的整数倍

                if (m_ImageCal != NULL)
{
delete[] m_ImageCal;
m_ImageCal = NULL;
}
m_ImageCal = new BYTE[m_Width* m_Height];//申请图像数据内存


char typ[128];
Hlong width,height;
Hlong Pointer;
get_image_pointer1(m_Image,&Pointer,typ,&width,&height);
memcpy(m_ImageCal,(LPBYTE)Pointer,m_WidthCal * m_Height);

       }

2、直方图计算

void CImageShowLPBYTEDlg::OnBnClickedShowhist()
{
m_ChartCtrl.RemoveAllSeries();
memset(m_GrayArray,0,256*sizeof(double));
for (int i = 0;i<m_Height;i++)
{
for (int j = 0;j<m_WidthCal;j++)
{
int gray = m_ImageCal[i*m_WidthCal+j];
m_GrayArray[gray]++;
}
}
OnAddseries();
}

代码不完整,只提供参考,如需代码,请联系QQ179141696