public override void draw() { HOperatorSet.SetColor(this.LWindowHandle, "cyan"); HOperatorSet.SetDraw(this.LWindowHandle, "margin"); HalconHelp.disp_message(this.LWindowHandle, "选中一个牙", "window", 12, 12, "green", "true"); HOperatorSet.DrawRectangle1(this.LWindowHandle, out toothRow1, out toothColumn1, out toothRow2, out toothColumn2); tr1 = toothRow1.D; tr2 = toothRow2.D; tc1 = toothColumn1.D; tc2 = toothColumn2.D; HObject rect1; HOperatorSet.GenEmptyObj(out rect1); HOperatorSet.GenRectangle1(out rect1, toothRow1, toothColumn1, toothRow2, toothColumn2); HOperatorSet.DispObj(rect1, this.LWindowHandle); HalconHelp.disp_message(this.LWindowHandle, "选中检测区域", "window", 12, 12, "green", "true"); HOperatorSet.DrawRectangle1(this.LWindowHandle, out RoiRow1, out RoiColumn1, out RoiRow2, out RoiColumn2); rr1 = RoiRow1.D; rr2 = RoiRow2.D; rc1 = RoiColumn1.D; rc2 = RoiColumn2.D; HObject rect2; HOperatorSet.GenEmptyObj(out rect2); HOperatorSet.GenRectangle1(out rect2, RoiRow1, RoiColumn1, RoiRow2, RoiColumn2); HOperatorSet.DispObj(rect2, this.LWindowHandle); }
public override void draw() { HOperatorSet.SetColor(this.LWindowHandle, "cyan"); HOperatorSet.SetDraw(this.LWindowHandle, "margin"); //HOperatorSet.SetDraw(LWindowHandle, "margin"); //HOperatorSet.SetColor(LWindowHandle, "green"); HalconHelp.disp_message(LWindowHandle, "选取需要检测部分的最宽处", "window", 12, 12, "black", "true"); HOperatorSet.DrawRectangle1(this.LWindowHandle, out Row1, out Column1, out Row2, out Column2); this.R1 = Row1.D; this.R2 = Row2.D; this.C1 = Column1.D; this.C2 = Column2.D; }
public void InitHalcon() { // Default settings used in HDevelop HOperatorSet.SetSystem("do_low_error", "false"); if (this.Image == null) { MyDebug.ShowMessage("初始化失败"); return; } HTuple width = new HTuple(), height = new HTuple(); HOperatorSet.GetImageSize(Image, out width, out height); HOperatorSet.SetPart(this.LWindowHandle, 0, 0, height, width); HOperatorSet.DispObj(Image, this.LWindowHandle); HOperatorSet.SetDraw(this.LWindowHandle, "margin"); HalconHelp.set_display_font(this.LWindowHandle, 16, "mono", "true", "false"); HOperatorSet.SetColor(this.LWindowHandle, "green"); }
private void OnImageProcessedEvent(CCamera instance, HObject ho_Image) { try { if (InvokeRequired) { Invoke(new CCamera.OnImageProcessedEventHandler(OnImageProcessedEvent), new object[] { instance, ho_Image }); return; } kk++; //Console.WriteLine("kk:" +kk); instance.tempImage.Dispose(); HOperatorSet.CopyImage(instance.Image, out instance.tempImage); HTuple cwindow = new HTuple(); switch (instance.logicName) { case "CCD1": cwindow = hWindowControl1.HalconWindow; break; case "CCD2": cwindow = hWindowControl2.HalconWindow; break; case "CCD3": cwindow = hWindowControl3.HalconWindow; break; case "CCD4": cwindow = hWindowControl4.HalconWindow; break; case "CCD5": cwindow = hWindowControl5.HalconWindow; break; //case "CCD6": cwindow = hWindowControl6.HalconWindow; // break; } for (int i = 0; i < 6; i++) { if (instance.logicName == "CCD" + i.ToString()) { HOperatorSet.SetColor(cwindow, "green"); HOperatorSet.SetDraw(cwindow, "margin"); HTuple w, h; HOperatorSet.GetImageSize(ho_Image, out w, out h); HOperatorSet.SetPart(cwindow, 0, 0, h, w); HOperatorSet.DispObj(ho_Image, cwindow); if (instance.RegionToDisp.IsInitialized() && instance.resultHTuple.Length > 0) { HOperatorSet.DispObj(instance.RegionToDisp, cwindow); HalconHelp.set_display_font(cwindow, 14, "courier", "false", "false"); HalconHelp.disp_message(cwindow, instance.resultHTuple, "window", 10, 10, "green", "false"); } } } switch (instance.logicName) { case "CCD1": cwindow = hWindowControl6.HalconWindow; break; case "CCD2": cwindow = hWindowControl7.HalconWindow; break; case "CCD3": cwindow = hWindowControl8.HalconWindow; break; case "CCD4": cwindow = hWindowControl9.HalconWindow; break; case "CCD5": cwindow = hWindowControl10.HalconWindow; break; } for (int i = 0; i < 6; i++) { if (instance.logicName == "CCD" + i.ToString()) { HOperatorSet.SetColor(cwindow, "green"); HOperatorSet.SetDraw(cwindow, "margin"); HTuple w, h; HOperatorSet.GetImageSize(ho_Image, out w, out h); HOperatorSet.SetPart(cwindow, 0, 0, h, w); HOperatorSet.DispObj(ho_Image, cwindow); if (instance.RegionToDisp.IsInitialized() && instance.resultHTuple.Length > 0) { HOperatorSet.DispObj(instance.RegionToDisp, cwindow); //if (instance.logicName == "CCD1") //{ // HalconHelp.set_display_font(cwindow, 14, "courier", "false", "false"); // HalconHelp.disp_message(cwindow, instance.resultHTuple, "window", 2, 2, "green", "false"); //} } } } DataRowCollection drc = ds.Tables["detailTable"].Rows; int rs = 0; string shijian = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString(); string path = PathHelper.currentProductPath + @"\" + shijian + ".txt"; foreach (DataRow dr in drc) { string s = dr[0].ToString(); if (dr[0].ToString() == instance.logicName) { if (instance.result.resultToShow.Count > rs) { double cl = double.Parse(instance.result.resultToShow[rs].data); double xz = (double)dr[2]; dr[5] = Math.Round((cl + xz), 3); if (double.Parse(dr[5].ToString()) <= double.Parse(dr[3].ToString()) && double.Parse(dr[5].ToString()) >= double.Parse(dr[4].ToString())) { dr[6] = "OK"; } else { dr[6] = "NG"; } if (instance.goodcountlist.Count() != 0) { dr[7] = Math.Round((double)(instance.goodcountlist[rs] / (double)Turntable.Instance.pn.totalCount * 100), 2).ToString() + "%"; //Console.WriteLine("" + instance.goodcountlist[rs] + "---" + (double)Turntable.Instance.pn.totalCount); } rs++; } else { dr[5] = 0; } // File.AppendAllText(path,dr[1].ToString() + " " + dr[5].ToString(), Encoding.Default); } } //File.AppendAllText(path,Environment.NewLine, Encoding.Default); DataHelper.CheckData(ds, instance.logicName, instance); } catch (Exception e) { MyDebug.ShowMessage("界面图像处" + e.Message); } finally { ho_Image.Dispose(); instance.RegionToDisp.Dispose(); instance.Image.Dispose(); instance.resultHTuple = new HTuple(); //UpdateProInfo(); } }
public void my_clamp(HObject ho_Region, out HObject ho_Arrow, HTuple hv_vOrh, out HTuple hv_length) { // Local iconic variables try { HObject ho_Arrow1 = null, ho_Arrow2 = null; // Local control variables HTuple hv_Rows = new HTuple(), hv_Columns = new HTuple(), hv_maxc = new HTuple(); HTuple hv_minc = new HTuple(), hv_index = new HTuple(); // Initialize local and output iconic variables HOperatorSet.GenEmptyObj(out ho_Arrow); HOperatorSet.GenEmptyObj(out ho_Arrow1); HOperatorSet.GenEmptyObj(out ho_Arrow2); hv_length = new HTuple(); HTuple Num = new HTuple(); HOperatorSet.CountObj(ho_Region, out Num); if (Num.I != 1) { //MessageBox.Show("将图像分割为一种颜色"); Debug.Print("将图像分割为一种颜色"); return; } HOperatorSet.GetRegionPoints(ho_Region, out hv_Rows, out hv_Columns); if ((int)(new HTuple(hv_vOrh.TupleEqual("h"))) != 0 && hv_Rows.Length > 0) { hv_maxc = hv_Columns.TupleMax(); hv_minc = hv_Columns.TupleMin(); hv_length = hv_maxc - hv_minc; HOperatorSet.TupleFind(hv_Columns, hv_maxc, out hv_index); ho_Arrow1.Dispose(); HalconHelp.gen_arrow_contour_xld(out ho_Arrow1, hv_Rows.TupleSelect(hv_index.TupleSelect( 0)), (hv_Columns.TupleSelect(hv_index.TupleSelect(0))) + 50, hv_Rows.TupleSelect( hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)), 15, 15); HOperatorSet.TupleFind(hv_Columns, hv_minc, out hv_index); ho_Arrow2.Dispose(); HalconHelp.gen_arrow_contour_xld(out ho_Arrow2, hv_Rows.TupleSelect(hv_index.TupleSelect( 0)), (hv_Columns.TupleSelect(hv_index.TupleSelect(0))) - 50, hv_Rows.TupleSelect( hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)), 15, 15); ho_Arrow.Dispose(); HOperatorSet.ConcatObj(ho_Arrow1, ho_Arrow2, out ho_Arrow); } else if ((int)(new HTuple(hv_vOrh.TupleEqual("v"))) != 0 && hv_Rows.Length > 0) { hv_maxc = hv_Rows.TupleMax(); hv_minc = hv_Rows.TupleMin(); hv_length = hv_maxc - hv_minc; HOperatorSet.TupleFind(hv_Rows, hv_maxc, out hv_index); ho_Arrow1.Dispose(); HalconHelp.gen_arrow_contour_xld(out ho_Arrow1, (hv_Rows.TupleSelect(hv_index.TupleSelect( 0))) + 50, hv_Columns.TupleSelect(hv_index.TupleSelect(0)), hv_Rows.TupleSelect( hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)), 15, 15); HOperatorSet.TupleFind(hv_Rows, hv_minc, out hv_index); ho_Arrow2.Dispose(); HalconHelp.gen_arrow_contour_xld(out ho_Arrow2, (hv_Rows.TupleSelect(hv_index.TupleSelect( 0))) - 50, hv_Columns.TupleSelect(hv_index.TupleSelect(0)), hv_Rows.TupleSelect( hv_index.TupleSelect(0)), hv_Columns.TupleSelect(hv_index.TupleSelect(0)), 15, 15); ho_Arrow.Dispose(); HOperatorSet.ConcatObj(ho_Arrow1, ho_Arrow2, out ho_Arrow); hv_length = (hv_Rows.TupleMax()) - (hv_Rows.TupleMin()); } ho_Arrow1.Dispose(); ho_Arrow2.Dispose(); return; } catch (Exception e) { ho_Arrow = null; hv_length = 0; return; } }