使用C#与Halcon制作读取图像软件

介绍
本程序使用C#与Halcon联合开发,主要实现指定文件夹下图像读取功能
窗体由Halcon自带hsmartwindowcontrol控件实现开发,使用contextMenuStrip1实现右键菜单功能,使用folderBrowserDialog1实现文件夹读取功能

基础功能:

  1. 选择图像文件夹,读取图像
  2. 通过hsmartwindowcontrol窗体显示图像
  3. 获取指定文件夹文件个数,并标志当前文件序号
  4. 窗体实现拖动,缩放,显示坐标灰度值
  5. 设置hsmartwindowcontrol窗体背景色
  6. 读取图像,保存图像,转灰度图

代码展示
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联合开发学习者参考

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值