Halcon打开图片并提取ROI图片


        void Match()
        {
            HTuple Width, Height, WindowHandle3, Row1, Column1, Row2, Column2, hv_ModelId, row, col, angle, score;
            HObject GrayImage, roi1, ho_Image, ho_ModelRegion, ho_TemplateImage;
            string temPath = Application.StartupPath + "\\tem.jpg";
            HOperatorSet.ReadImage(out ho_Image, temPath);
            HOperatorSet.GetImageSize(ho_Image, out Width, out Height);
            HOperatorSet.OpenWindow(0, 0, Width, Height, 0, "", "", out WindowHandle3);
            HDevWindowStack.Push(WindowHandle3);
            //需要显示一下,窗口才会更新图片
            if (HDevWindowStack.IsOpen())
                HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());
            //设置窗口几何对象显示颜色,这个设置一直到下一个SetColor才会改变。
            if (HDevWindowStack.IsOpen())
                HOperatorSet.SetColor(HDevWindowStack.GetActive(), "red");
            //定义区域的填充模式,有'fill', 'margin'前者是填充全部区域,后者是显示边缘,在显示边缘时可以用
            if (HDevWindowStack.IsOpen())
                HOperatorSet.SetDraw(HDevWindowStack.GetActive(), "margin");
            //设置线宽
            if (HDevWindowStack.IsOpen())
                HOperatorSet.SetLineWidth(HDevWindowStack.GetActive(), 1);
            //设置在窗口写字的位置
            HOperatorSet.SetTposition(WindowHandle3, 24, 12);
            HOperatorSet.WriteString(WindowHandle3, "请用鼠标画ROI");
            //画不带方向的roi矩形框,2是带方向的
            HOperatorSet.DrawRectangle1(WindowHandle3, out Row1, out Column1, out Row2, out Column2);
            //生成矩形框
            HOperatorSet.GenRectangle1(out ho_ModelRegion, Row1, Column1, Row2, Column2);

            //reduce_domain提取的图像的大小与原图像大小保持一致,可以结合crop_domain一起使用,去掉没有用到的区域
            //用上面的矩形抠图,生成roi区域
            HOperatorSet.ReduceDomain(ho_Image, ho_ModelRegion, out ho_TemplateImage);
            HOperatorSet.CropDomain(ho_TemplateImage, out ho_TemplateImage);

            string fileName = Application.StartupPath + "\\tem.bmp";
            HOperatorSet.WriteImage(ho_TemplateImage, "bmp", 0, fileName);

            //与上面两行代码效果一样,去掉没有用到的区域
            HOperatorSet.CropRectangle1(ho_Image, out ho_TemplateImage, Row1, Column1, Row2, Column2);
            fileName = Application.StartupPath + "\\tem2.bmp";
            HOperatorSet.WriteImage(ho_TemplateImage, "bmp", 0, fileName);

        }

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@David Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值