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