C#与halcon联合 缩放移动自适应图像

这篇具有很好参考价值的文章主要介绍了C#与halcon联合 缩放移动自适应图像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读取图片

//获取文件路径下的图片
        public HObject GetImgFromPath(string imgPath)
        {
            HObject L_Img;
            HOperatorSet.GenEmptyObj(out L_Img);//清空图片
            L_Img.Dispose();//释放
            HOperatorSet.ReadImage(out L_Img, imgPath);//读取图片存入到l_img
            return L_Img;
        }

拉伸显示

//图片拉伸显示
        public void  ImgIsStretchDisplay(HObject L_Img, HTuple Hwindow)
        {
            HTuple hv_Width,hv_Height;
            HOperatorSet.ClearWindow(Hwindow);//清空画面
            HOperatorSet.GetImageSize(L_Img, out hv_Width, out hv_Height);//获取图片大小规格
            HOperatorSet.SetPart(Hwindow, 0, 0, hv_Height, hv_Width);//设置窗体的规格
            HOperatorSet.DispObj(L_Img, Hwindow);//显示图片

        }

不拉伸,原图比例显示

//图片不拉伸显示
        public void ImgIsNotStretchDisplay(HObject L_Img, HTuple Hwindow)
        {
            HTuple hv_Width, hv_Height;
            HTuple win_Width, win_Height, win_Col, win_Row, cwin_Width, cwin_Height;
            HOperatorSet.ClearWindow(Hwindow);
            HOperatorSet.GetImageSize(L_Img, out hv_Width, out hv_Height);//获取图片大小规格
            HOperatorSet.GetWindowExtents(Hwindow, out win_Row, out win_Col, out win_Width, out win_Height);//获取窗体大小规格
            cwin_Height = 1.0 * win_Height / win_Width * hv_Width;//宽不变计算高          
            if (cwin_Height > hv_Height)//宽不变高能容纳
            {
                cwin_Height = 1.0 * (cwin_Height - hv_Height) / 2;
                HOperatorSet.SetPart(Hwindow, -cwin_Height, 0, cwin_Height + hv_Height, hv_Width);//设置窗体的规格
            }
            else//高不变宽能容纳
            {
                cwin_Width = 1.0 * win_Width / win_Height * hv_Height;//高不变计算宽
                cwin_Width = 1.0 * (cwin_Width - hv_Width) / 2;
                HOperatorSet.SetPart(Hwindow, 0, -cwin_Width, hv_Height, cwin_Width + hv_Width);//设置窗体的规格
            }
            HOperatorSet.DispObj(L_Img, Hwindow);//显示图片
        }    

图像缩放

解决缩太小崩溃问题,联合鼠标滚轮事件

//图片缩小放大,配合鼠标滚轮事件
        public  void ImgZoom(HObject L_Img, HTuple Hwindow, int Delta = 0)
        {
            HTuple Zoom, Row, Col, L_Button;
            HTuple hv_Width, hv_Height;
            HTuple Row0, Column0, Row00, Column00, Ht, Wt;
            HTuple[] Now_Pos = new HTuple[4];
            if (Delta > 0)//鼠标滚动格值,一般120
            {
                Zoom = 1.2;//向上滚动,放大倍数
            }
            else
            {
                Zoom = 0.8;//向下滚动,缩小倍数
            }
            HOperatorSet.GetMposition(Hwindow, out Row, out Col, out L_Button);//获取当前鼠标的位置
            HOperatorSet.GetPart(Hwindow, out Row0, out Column0, out Row00, out Column00);//获取当前窗体的大小规格
            HOperatorSet.GetImageSize(L_Img, out hv_Width, out hv_Height);//获取图片大小规格
            Ht = Row00 - Row0;
            Wt = Column00 - Column0;
            if (Ht * Wt < 32000 * 32000 || Zoom == 1.2)
            {
                Now_Pos[0] = (Row0 + ((1 - (1.0 / Zoom)) * (Row - Row0)));
                Now_Pos[1] = (Column0 + ((1 - (1.0 / Zoom)) * (Col - Column0)));
                Now_Pos[2] = Now_Pos[0] + (Ht / Zoom);
                Now_Pos[3] = Now_Pos[1] + (Wt / Zoom);
                HOperatorSet.SetPart(Hwindow, Now_Pos[0], Now_Pos[1], Now_Pos[2], Now_Pos[3]);
                HOperatorSet.ClearWindow(Hwindow);
                HOperatorSet.DispObj(L_Img, Hwindow);
            }
            else
            {
                ImgIsNotStretchDisplay(L_Img, Hwindow);//不拉伸显示
            }

        }

图像移动,实时移动

解决移动太快图像刷新闪烁问题

HTuple oldRow, oldColumn;
        //鼠标按下去拖着图像移动,配合鼠标坐标按下与移动事件
        public void MouseDownMoveImg(HObject L_Img, HTuple Hwindow)
        {
            HTuple row1, col1, row2, col2, Row, Column, Button;
            HOperatorSet.GetMposition(Hwindow, out Row, out Column, out Button);
            double RowMove = Row - oldRow; 
            double ColMove = Column - oldColumn;
            HOperatorSet.GetPart(Hwindow, out row1, out col1, out row2, out col2);//得到当前的窗口坐标
            HOperatorSet.SetPart(Hwindow, row1 - RowMove, col1 - ColMove, row2 - RowMove, col2 - ColMove);

            //防止刷新图片太快的时候闪烁
            HOperatorSet.SetSystem("flush_graphic", "false");
            HOperatorSet.ClearWindow(Hwindow);
            HOperatorSet.SetSystem("flush_graphic", "true");
            //

            HOperatorSet.DispObj(L_Img, Hwindow);
        }

        public void SaveMouseDownPosition(HTuple Hwindow)
        {
            HTuple Button;
            HOperatorSet.GetMposition(Hwindow, out oldRow, out oldColumn, out Button);

        }

图像自适应

这里我们采用不拉伸显示函数文章来源地址https://www.toymoban.com/news/detail-634269.html

//设置自动适应
        private void tsMAutoFit_Click(object sender, EventArgs e)
        {
            try
            {
                ImgIsNotStretchDisplay(ho_Image1, hWindowControl1.HalconWindow);
            }
            catch (Exception)
            {
                MessageBox.Show("自适应失败,请插入图像!");
            }          
        }

到了这里,关于C#与halcon联合 缩放移动自适应图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c#联合Halcon进行几何定位

    1: 首先配置在winfom引用程序中引用两个halcon应用程序的库:分别是halcon.dll和halcondotnet.dll,而后把这两个库放在你的应用程序输出路径下面,然后在下边的图片中取消首选32位的勾选。 2:右键点击工具箱,单击选择项,然后点击浏览按钮,引用 halcondotnet.dll控件,点击确定就

    2024年01月20日
    浏览(28)
  • C#联合Halcon机器视觉框架源码

    本软件参考EV开发,共用 50多个算子 模块,基于 WPF+Halcon ,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。 整体代码目录结构如下: 一、Main模块 软件启动入口位置,将NExtVision设为启动项目。 LoadFrm用于初始化、增加预编译及加载插件等功能。

    2024年04月12日
    浏览(39)
  • Halcon用矩阵实现图像变换(平移,旋转,缩放,镜像等)

    目录 图像变换介绍  用Halcon自带的算子实现图像变换 使用矩阵来实现相关算子的功能 一、平移 二、旋转 三、缩放 四、镜像 完整代码         在halcon中经常会用到图像变换的操作,然后这次作业是用矩阵来实现相关算子的功能,学到了挺多的所以就记录下来方便复习。

    2024年04月17日
    浏览(31)
  • C#联合halcon开发,连接相机颜色不对,无法连接相机

    相机可以在海康软件MVS中打开(颜色正常),但是在C#开发的程式中无法打开(彩色相机颜色显示异常)。 1.查看相机和MVS软件是否连接成功; 2.如果成功,连接C#程序; 3.程序连接失败,在MVS中连接相机,查看MVS里面相机的图像处理-像素格式,确定相机是否为黑白还是彩色

    2024年02月04日
    浏览(30)
  • c#联合halcon机器视觉通用视觉框架2。流程化开发

    c#联合halcon机器视觉通用视觉框架2。 流程化开发。 缺陷检测,定位,测量,OCR识别。 拉控件式。 在现代工业领域中,机器视觉技术已经成为了一个非常重要的应用方向。然而,要将这种技术应用到具体的生产场景中,需要一个有效的视觉框架来实现。在这方面,c#联合hal

    2024年04月13日
    浏览(37)
  • Baumer工业相机堡盟相机BGAPI SDK如何联合Halcon进行图像转换(C++)(将byte二进制图像数据转为Hobject)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。   Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可

    2024年02月09日
    浏览(54)
  • 【图像处理】去雾源码收集(halcon、python、C#、VB、matlab)

    随着图像处理技术和计算机视觉技术的蓬勃发展,对特殊天气下的场景检测和图像处理成为重要的研究方向。在雾天拍摄的图像容易受雾或霾的影响,导致图片模糊、对比度低以至于丢失图像重要信息。因此,需要对带雾图像进行去雾,处理图像信息,保证其他计算机视觉任

    2024年02月12日
    浏览(31)
  • Python联合Halcon(详细教程)

    在项目开发过程中,若遇到需要将 Halcon的图像处理代码加载到C++项目中 ,此时仅需将 Halcon代码导出为C++形式 即可。 若需要将 Halcon代码移植到python项目中 ,此时 导出选项无python形式 ,又该如何实现?本博客将介绍Python联合Halcon的 两种 常用方法 法1:(导入python版halcon库,

    2024年02月15日
    浏览(25)
  • C#/halcon联合编程 三维点云数据可视化(ActiViz实现)

    由于甲方需要,最近开始做的一个项目的框架旋转的是C#/halcon联合编程进行的,主要设计一些三维ocr、三维缺陷检测等等。之前类似的项目框架选的是C++/Qt/PCL/vtk,突然这么一变,还是有些不适应,在第一步点云可视化就被难倒了。 在超人视觉的罗超老师的视频中找到了一种

    2024年02月03日
    浏览(30)
  • C# +HALCON 工业相机调试

    HALCON error #5312: Image acquisition:device cannot be initialized in operator    winform和HDevelop同时对相机进行连接导致的。关闭其中一个就可以正常连接相机。 HALCON error #5301 Image acquisition: wrong color depth   取相时,报异常。原因是open_framegrabber的ColorSpace参数设置为rgb。但是相机是黑白相机。

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包