源码下载地址:https://github.com/lizhiqiang0204/ImageGray.git
Halcon代码如下:
*读取图片,转换成灰度图片 read_image (Image1, 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/cable1.png') rgb1_to_gray (Image1, Image) *选择测量的区域 draw_rectangle1 (200000, Row1, Column1, Row2, Column2) gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) *检测灰度 intensity (Rectangle, Image, Mean, Deviation) dev_display (Image)
C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/cable1.png 这个目录以及图片是安装Halcon自动生成的
将halcon程序导出生成C#文件
将生成的C#文件添加到WPF工程下
采集图像灰度值的方法就是Halcon生成的C#类里面的方法 public void GatherGray(HTuple Window, TextBlock txbGray)
{ hv_ExpDefaultWinHandle = Window; // Local iconic variables HObject ho_Image1, ho_Image, ho_Rectangle; // Local control variables HTuple hv_Row1 = null, hv_Column1 = null, hv_Row2 = null; HTuple hv_Column2 = null, hv_Mean = null, hv_Deviation = null; // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_Image1); HOperatorSet.GenEmptyObj(out ho_Image); HOperatorSet.GenEmptyObj(out ho_Rectangle); //读取图片,转换成灰度图片 ho_Image1.Dispose(); HOperatorSet.ReadImage(out ho_Image1, "C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/particle.png");//读原始照片 ho_Image.Dispose(); HOperatorSet.Rgb1ToGray(ho_Image1, out ho_Image);//把彩色图像转化成黑白照片 HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);//显示图像 //选择测量的区域 HOperatorSet.DrawRectangle1(hv_ExpDefaultWinHandle, out hv_Row1, out hv_Column1,out hv_Row2, out hv_Column2); ho_Rectangle.Dispose(); HOperatorSet.GenRectangle1(out ho_Rectangle, hv_Row1, hv_Column1, hv_Row2, hv_Column2); //检测灰度 HOperatorSet.Intensity(ho_Rectangle, ho_Image, out hv_Mean, out hv_Deviation); HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle); //MessageBox.Show(hv_Mean.ToString()); txbGray.Text = ((double)hv_Mean).ToString("0.00");//显示灰度值 ho_Image1.Dispose(); ho_Image.Dispose(); ho_Rectangle.Dispose(); } }
}
编译生成执行文件如下图,点击采集灰度按键,然后在作出图像区域按住鼠标左键选择采集的区域,选择完毕后,点击鼠标右键即可显示灰度值