设为首页收藏本站 距【华南国际工业博览会】开幕 : :

51Halcon机器视觉

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 174|回复: 2

[基础教程] Halcon C#开图,调整大小、转灰阶

[复制链接]
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 24 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    21

    帖子

    52

    积分

    Rank: 1

    积分
    52

    切换助手验证会员

    发表于 2021-4-10 22:16:25 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    在此获得许多帮助,学后作一点回餽,第一次发文,如有违规请再指正。
    Halcon  C#开图,调整大小、转灰阶
    调整大小功能没有很完整,请大神再指导修正
    1.   using System;
    2.     using System.Collections.Generic;
    3.     using System.ComponentModel;
    4.     using System.Data;
    5.     using System.Drawing;
    6.     using System.Linq;
    7.     using System.Text;
    8.     using System.Windows.Forms;
    9.     using HalconDotNet;//自行添加引用

    10. namespace HalconCsExample
    11. {

    12.      public partial class Form1 : Form
    13.      {

    14.          private static HWindow hwindow; //全局视窗变数

    15.          HDevelopExport HD = new HDevelopExport();
    16.          string ImagePath;

    17.          public Form1()
    18.          {
    19.              InitializeComponent();
    20.              hwindow = hWindowControl2.HalconWindow;//初始化视窗变量
    21.              this.btnImagePro.Enabled = false;


    22.          }

    23.         private void Form1_Load(object sender, EventArgs e)
    24.         {

    25.         }
    26.         //开启图档
    27.         private void button1_Click(object sender, EventArgs e)
    28.         {
    29.             openFileDialog1.Filter = "JPEG文件|*.jpg*|BMP文件|*.bmp*|TIFF文件|*.tiff*";
    30.             openFileDialog1.RestoreDirectory = true;
    31.             openFileDialog1.FilterIndex = 1;
    32.             if (openFileDialog1.ShowDialog() == DialogResult.OK)
    33.             {
    34.                 ImagePath = openFileDialog1.FileName;

    35.                 HD.ReadImage(hWindowControl2.HalconWindow, ImagePath);
    36.                 this.btnImagePro.Enabled = true;
    37.             }   
    38.         }


    39.         //彩色图转灰阶处理
    40.         private void button2_Click(object sender, EventArgs e)
    41.         {
    42.             HD.ImagePro();
    43.             this.btnImagePro.Enabled = false;
    44.         }

    45.         //调整影像大小
    46.         private void button3_Click(object sender, EventArgs e)
    47.         {
    48.                 #region 初始化变量
    49.                 // Local iconic variables
    50.                 HObject ho_Image;
    51.                 // Local control variables
    52.                 HTuple hv_Width = new HTuple(), hv_Height = new HTuple();
    53.                 // Initialize local and output iconic variables
    54.                 HOperatorSet.GenEmptyObj(out ho_Image);
    55.                 ho_Image.Dispose();
    56.                 HOperatorSet.ReadImage(out ho_Image, ImagePath);
    57.                 hv_Width.Dispose(); hv_Height.Dispose();
    58.                 #endregion

    59.                 #region 缩放图像,适应窗口
    60.                 bool needResizeImage = true;
    61.                 //获取图像大小及纵横比
    62.                 HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
    63.                 int im_width = int.Parse(hv_Width.ToString());
    64.                 int im_height = int.Parse(hv_Height.ToString());
    65.                 double im_AspectRatio = (double)(im_width) / (double)(im_height);
    66.                 //获取窗口大小及纵横比
    67.                 int w_width = hWindowControl2.Size.Width;
    68.                 int w_height = hWindowControl2.Size.Height;
    69.                 double w_AspectRatio = (double)(w_width) / (double)(w_height);

    70.                 HOperatorSet.SetSystem("int_zooming", "false");//图像缩放之前最好将此参数设置为false.
    71.                 HTuple para = new HTuple("constant");
    72.                 HObject ho_zoomImage;
    73.                 HOperatorSet.GenEmptyObj(out ho_zoomImage);

    74.                 ho_zoomImage.Dispose();
    75.                 if (w_width < im_width && im_AspectRatio > w_AspectRatio)
    76.                 {
    77.                     //超宽图像               
    78.                     HOperatorSet.ZoomImageSize(ho_Image, out ho_zoomImage, w_width, w_width / im_AspectRatio, para);
    79.                 }
    80.                 else if (w_height < im_height && im_AspectRatio < w_AspectRatio)
    81.                 {
    82.                     //超高图像               
    83.                     HOperatorSet.ZoomImageSize(ho_Image, out ho_zoomImage, w_height * im_AspectRatio, w_height, para);
    84.                 }
    85.                 else
    86.                 {
    87.                     needResizeImage = false;
    88.                 }
    89.                 #endregion

    90.                 #region 显示图像
    91.                 hwindow.SetPart(0, 0, -2, -2);
    92.                 if (needResizeImage)
    93.                 {
    94.                     hwindow.DispObj(ho_zoomImage);
    95.                 }
    96.                 else
    97.                 {
    98.                     hwindow.DispObj(ho_Image);
    99.                 }

    100.                 #endregion

    101.                 ho_Image.Dispose();
    102.                 ho_zoomImage.Dispose();
    103.                 hv_Width.Dispose();
    104.                 hv_Height.Dispose();
    105.             }

    106.     }


    107.     public partial class HDevelopExport
    108.      {
    109.          public HTuple hv_ExpDefaultWinHandle;
    110.          // 局部标志性变量
    111.          HObject ho_Image, ho_GrayImage;


    112.          public void InitHalcon()
    113.          {
    114.              // HDevelop中使用的默认设置
    115.              HOperatorSet.SetSystem("do_low_error", "false");
    116.           }

    117.          public void ReadImage(HTuple Window,string path)
    118.          {
    119.              hv_ExpDefaultWinHandle = Window;

    120.              // 初始化局部和输出图标变量
    121.              HOperatorSet.GenEmptyObj(out ho_Image);
    122.              HOperatorSet.GenEmptyObj(out ho_GrayImage);

    123.              //读取图片
    124.              //dev_close_window(...);
    125.              ho_Image.Dispose();
    126.              HOperatorSet.ReadImage(out ho_Image, path);

    127.              //dev_open_window(...);
    128.              HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);

    129.          }

    130.          //灰阶处理
    131.          public void ImagePro()
    132.          {
    133.              ho_GrayImage.Dispose();
    134.              HOperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);
    135.              HOperatorSet.DispObj(ho_GrayImage, hv_ExpDefaultWinHandle);

    136.              ho_Image.Dispose();
    137.              ho_GrayImage.Dispose();

    138.          }
    139.   //

    140.         //
    141.      }
    142. }
    复制代码

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    振奋
    昨天 19:04
  • 签到天数: 54 天

    连续签到: 4 天

    [LV.5]常住居民I

    1

    主题

    12

    帖子

    73

    积分

    Rank: 1

    积分
    73
    发表于 6 天前 | 显示全部楼层
    谢谢分享!

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    2020-10-9 08:23
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    0

    主题

    27

    帖子

    75

    积分

    Rank: 1

    积分
    75
    发表于 5 天前 | 显示全部楼层

    谢谢分享!

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生
    51Halcon机器视觉X

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    申请友链| 小黑屋| 手机版| Archiver|  

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号-2 粤公网安备44030602000670号

    快速回复 返回顶部 返回列表