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);

        }

 


版权声明:本文为u012842630原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。