c# + halcon编程(读图、显示图、处理图、鼠标和图像交互)
生活随笔
收集整理的這篇文章主要介紹了
c# + halcon编程(读图、显示图、处理图、鼠标和图像交互)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.halcon編寫測試號算法代碼部分后導出c#文件。
2.vs種引用halcon安裝目錄下的halcondonet,工具箱中可添加控件HWindowControl。
2.代碼示例
using System; using System.Theading.Tasks; using System.Windows.Forms; using HalconDotNet;namespace WindowApp {public partial class Form1: From{HTuple WindowsID, ImageWidth;private double RowDown; // 鼠標按下時的行坐標private double ColDown; // 鼠標按下時的列坐標HObject ho_Image;public Form1(){InitializeComponent();CreateHalonWindow();}private void hWindowControl1_HMouseWheel(obejct sender, HMouseEventArgs e){HTuple Zoom, Row, Col, Button;HTuple Row0, Column0, Row00, Column00, Ht, Wt, r1, c1, r2, c2;if(e.Delta > 0){Zoom = 1.5;}else{Zoom = 0.5;}HOperatorSet.GetMposition(WindowID, out Row, out Col, out Button);HOperatorSet.GetPart(WindowID, out Row0, out Column0, out Row00, out Column00);Ht = Row00 - Row0;Wt = Column00 - Column0;if(Ht * Wt < 3200 * 3200 || Zoom == 1.5){r1 = (Row0 + ((1 - (1.0 / Zoom)) * (Row - Row0)));c1 = (Column0 + ((1 - (1.0 / Zoom)) * (Col- Column0)));r2 = r1 + (Ht / Zoom);c2 = c1 + (Wt / Zoom);HOperatorSet.SetPart(WindowID, r1, c1, r2, c2);HOperatorSet.ClearWindow(WindowID);HOperatorSet.DispObj(ho_Image, WindowID);}}private void hWIndowControl1_HMouseDown(object sender, HMouseEventArgs e){HTuple Row,Column,Button;HOperatorSet.GetMposition(WindowID, out Row, out Column, out Button);RowDown = ROw;ColDown = Column;}private void hWindowControl1_HMouseUp(object sender, HMouseEventArgs e){HTuple row1, col1, row2, col2, Row, Column, Button;HOperatorSet.GetMposition(WindowID, out Row, out Column, out Button);double RowMove = Row - RowDown;double ColMove = Column - ColDown;HOperatorSet.GetPart(WindowID, out row1, out col1, out row2, out col2);HOperatorSet.GetPart(WindowID, row1 - RowMove, col1 - ColMove, row2 - RowMove, col2 - ColMove);HOperatorSet.ClearWindow(WidnowID);if(ImageHeight != null){HOperatorSet.DispObj(ho_Image, WindowID); }else{MessageBox.Show("請加載一張圖片");}}private void hWindowControl1_HMouseMove(object sender, HMouseEventArgs e){HTuple Row,Column,Button,pointGray;HOperatorSet.GetMposition(WindowID, out Row, out Column, out Button);if(ImageHeight != null && (Row > 0 && Row < ImageHeight) && (Column > 0 && Column < ImageWidth)){HOperator.GetGrayVal(ho_Image, Row, Column, out pointGray);}else{pointGray = "_";}String str = String.Format("Row:{0} Column:{1} Gray:{2}",Row, Column, pointGray);label.Text = str;}private void hWindowControl1_HMouseDBClick(object sender, HMouseEvectArgs e){HOperatorSet.SetPart(WindowID, 0, 0, ImageHeight-1, ImageWidth-1);HOperatorSet.ClearWidnow(WindowID);HOperatorSet.DispObj(ho_Image, WidnowID);}public void CreateHalconWindow(){WindowID = hWindowControl1.HalconWindow;}priate void button1_Click(object sender, EventArgs e){// HDevelopExport hd = new HDevelopExport();// hd.RunHalcon(WindowID);OpenFileDialog dlg = new OpenFileDialog();dlg.Filter = "所有圖像文件 | *.bmp; *.jpg; *.png; *.tif; *.ico";if(dlg.ShowDoalog() == DialogResult.OK){HTuple ImagePath = dlg.FileName;HOperator.ReadImage(out ho_Image, ImagePath);}HOperatorSet.GetImageSize(ho_Image, out ImageWidth, out ImageHeight);HOperatorSet.SetPart(WindowID, 0, 0, ImageWidth, ImageHeight);HoperatorSet.DispObj(ho_Image, WindowID);}}public partial class HDevelopExport : Object{public HTuple hv_ExpDefaultWinHandle;public HDevelopExport(){initHalcon();}private void action(){HObject ho_Image, ho_GrayImage;HTuple hv_Width = null, hv_Height = null;HoperatorSet.GenEmptyObj(out ho_Image);HoperatorSet.GenEmptyObj(out ho_GrayImage);ho_Image.Dispose();ho_GrayImage.Dispose();HoperatorSet.ReadImage(out ho_Image, "D:/1.jpg");HoperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);HoperatorSet.GetImageSize(ho_GrayImage, out hv_Width, out hv_Height);HOperatorSet.DispObj(ho_GrayImage, hv_ExpDefaultWinHandle);ho_Image.Dispose();ho_GrayImage.Dispose();HoperatorSet.ClearObj(ho_Image);hv_Width = null;hv_Height = null;}public void initHalcon(){HOperatorSet.SetSystem("width", 512);HOperatorSet.SetSystem("height", 512);}public void RunHalcon(HTuple Window){hv_ExpDefaultWinHandle = Window;action();}} }總結
以上是生活随笔為你收集整理的c# + halcon编程(读图、显示图、处理图、鼠标和图像交互)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Postman使用技巧3
- 下一篇: “'cookies.txt' does