介绍
本程序使用C#与Halcon联合开发,主要实现指定文件夹下图像读取功能
窗体由Halcon自带hsmartwindowcontrol控件实现开发,使用contextMenuStrip1实现右键菜单功能,使用folderBrowserDialog1实现文件夹读取功能
基础功能:
- 选择图像文件夹,读取图像
- 通过hsmartwindowcontrol窗体显示图像
- 获取指定文件夹文件个数,并标志当前文件序号
- 窗体实现拖动,缩放,显示坐标灰度值
- 设置hsmartwindowcontrol窗体背景色
- 读取图像,保存图像,转灰度图
代码展示
hsmartwindowcontrol显示灰度坐标
if (ShowImage.IsInitialized() || GrayImage.IsInitialized())
{
HTuple count;
HTuple Row = (int)e.Y;
HTuple Column = (int)e.X;
HObject CurImage = new HObject(); HOperatorSet.GenEmptyObj(out CurImage);
if (转灰度图ToolStripMenuItem.Checked)
{
CurImage = GrayImage;
}
else
{
CurImage = ShowImage;
}
if ((Row >= 0) && (Row < WindowHeight) && (Column >= 0) && (Column < WindowWidth))
{
HOperatorSet.GetGrayval(CurImage, Row, Column, out HTuple GrayValue);
HOperatorSet.CountChannels(CurImage, out count);
if (count == 1)
{
label1_Gray.Text = $"Row:{Row.D.ToString("0")},Column:{Column.D.ToString("0")} 灰度值:{GrayValue.D.ToString("0")}";
}
else
{
label1_Gray.Text = $"Row:{Row.D.ToString("0")},Column:{Column.D.ToString("0")}" + "灰度值:" + ((int)GrayValue[0]).ToString().PadLeft(3, '0') + "," + ((int)GrayValue[1]).ToString().PadLeft(3, '0') + "," + ((int)GrayValue[2]).ToString().PadLeft(3, '0');
}
}
}
- 读取图片
`if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
ImagePath = openFileDialog1.FileName;
HOperatorSet.ReadImage(out ShowImage, ImagePath);
HOperatorSet.GetImageSize(ShowImage, out WindowWidth, out WindowHeight);
label2_Kuan.Text = "宽:" + WindowWidth;
label3_Gao.Text = "高:" + WindowHeight;
HOperatorSet.SetPart(Window, 0, 0, WindowHeight - 1, WindowWidth - 1);
HOperatorSet.DispObj(ShowImage, Window);
}`
- 保存图片
if (ShowImage.IsInitialized() || GrayImage.IsInitialized())
{
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
if (转灰度图ToolStripMenuItem.Checked)
{
HOperatorSet.WriteImage(GrayImage, "jpg", 0, saveFileDialog1.FileName);
}
else
{
HOperatorSet.WriteImage(ShowImage, "jpg", 255, saveFileDialog1.FileName);
}
}
}`
读取上一张图片
if (FilePath == "")
{
MessageBox.Show("图片序列为空,请选择图片");
return;
}
if (location == 0)
{
MessageBox.Show("当前位于第一张图片!!!");
return;
}
HOperatorSet.GenEmptyObj(out ShowImage);
string[] FileList = System.IO.Directory.GetFileSystemEntries(FilePath);//获取目录下所有文件个数,并组列数组
int retreat = location - 1;//读取文件序号
HOperatorSet.ReadImage(out ShowImage, FileList[retreat]);//读取文件
HOperatorSet.GetImageSize(ShowImage, out WindowWidth, out WindowHeight);
label2_Kuan.Text = "宽:" + WindowWidth;
label3_Gao.Text = "高:" + WindowHeight;
HOperatorSet.SetPart(Window, 0, 0, WindowHeight - 1, WindowWidth - 1);
HOperatorSet.DispObj(ShowImage, Window);
label1_now.Text = "当前:" + retreat.ToString();
location = location - 1;
本例,适合初入了解C#与Halcon联合开发学习者参考