C#Halcon跨窗口顏色識別

? ? ? ?機器視覺是一門讓計算機模擬人類視覺功能的學科。顏色識別在其中扮演著重要的角色,它旨在通過對圖像中的顏色信息進行分析,從而識別出圖像中的目標物體或者區域。例如,在水果分揀系統中,可以根據水果的顏色(如蘋果的紅色、香蕉的黃色等)將不同種類的水果區分開來;在工業生產線上,可以檢測產品表面顏色是否符合標準,從而實現質量控制。

demo運行效果

修改參數

繼續縮小系數

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ViewControl;
using HalconDotNet;
using System.Reflection.Emit;
using static System.Net.Mime.MediaTypeNames;
using System.Drawing.Text;
namespace DeepLearningTest1
{public partial class FormMain : Form{HalconView HW;HObject HIMage = new HObject();public FormMain(){InitializeComponent();HW = new HalconView();HW.HWindowControl.BackColor = Color.White;splitContainer1.Panel1.Controls.Add(HW);HW.Dock = DockStyle.Fill;}       private void button1_Click(object sender, EventArgs e){try{OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "圖片文件(*.bmp;*.jpg;*.gif;*.png;*.tiff;*.tif;*.ply)|*.bmp;*.jpg;*.gif;*.png;*.tiff;*.tif;*.ply";openFileDialog.RestoreDirectory = true;openFileDialog.FilterIndex = 1;if (openFileDialog.ShowDialog() == DialogResult.OK){label3.Text = openFileDialog.FileName;HOperatorSet.ReadImage(out HIMage, label3.Text);HW.DispImage(HIMage, true);}}catch (Exception ex){MessageBox.Show("加載圖片失敗  " + ex.ToString());}}private void btn_DrawROI_Click(object sender, EventArgs e){Form2 F2 = new Form2( HIMage);F2.Show();}private void button2_Click(object sender, EventArgs e){HOperatorSet.ReadClassGmm("./12.ggc", out var hv_GMMHandle1);HOperatorSet.CreateClassLutGmm(hv_GMMHandle1, new HTuple(), new HTuple(), out  var hv_ClassLUTHandle1);HOperatorSet.ClassifyImageClassLut(HIMage, out var ho_ClassRegions, hv_ClassLUTHandle1);HW.HalconWindow.ClearWindow();HW.HalconWindow.SetDraw("fill");HW.HalconWindow.SetColor("white");HW.DispObject(HIMage);HW.DispObject(ho_ClassRegions);}}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ViewControl;
using HalconDotNet;
using static System.Net.Mime.MediaTypeNames;
namespace DeepLearningTest1
{public partial class Form2 : Form{HalconView HW2;HObject HIMage2 = new HObject(), Circle = new HObject ();HTuple  hv_GMMHandle = new HTuple(), hv_ClassLUTHandle=new HTuple();public Form2(HObject HIMage){InitializeComponent();HIMage2 = HIMage;HW2 = new HalconView();HW2.HWindowControl.BackColor = Color.White;splitContainer1.Panel2.Controls.Add(HW2);HW2.Dock = DockStyle.Fill;}private void btn_loadImage_Click(object sender, EventArgs e){if (!HIMage2.IsInitialized()) { MessageBox.Show("圖片為空"); return; }HW2.DispImage(HIMage2, true);}private void btn_save_Click(object sender, EventArgs e){HOperatorSet.WriteClassGmm(hv_GMMHandle, "./12.ggc");this.Close();}private void btn_DrawROI_Click(object sender, EventArgs e){try{if (!HIMage2.IsInitialized()) { MessageBox.Show("圖片為空"); return; }HSystem.SetSystem("clip_region", "false");HW2.Focus();HW2.DrawCircleMod(out Circle, 578, 627, 20, out HTuple r1, out HTuple c1, out HTuple radio);HW2.HalconWindow.SetColor("blue");HW2.DispObject(Circle);}catch (Exception ex){MessageBox.Show("設置區域失敗  " + ex.ToString());}}private void btn_Reduce_Click(object sender, EventArgs e){HOperatorSet.CreateClassGmm(Convert.ToInt32(tBx_NunDim.Text), 1, 1, "full", "none", 3, 42, out hv_GMMHandle);HOperatorSet.AddSamplesImageClassGmm(HIMage2, Circle, hv_GMMHandle,Convert.ToInt32(tBx_Randomize.Text));HOperatorSet.TrainClassGmm(hv_GMMHandle, 100, 0.1, "training", 1, out 
var hv_Centers,out var hv_Iter);HOperatorSet.CreateClassLutGmm(hv_GMMHandle, new HTuple(), new HTuple(), out hv_ClassLUTHandle);}private void btn_DisResult_Click(object sender, EventArgs e){HOperatorSet.ClassifyImageClassLut(HIMage2, out var ho_ClassRegions, hv_ClassLUTHandle);HW2.HalconWindow.SetDraw("fill");HW2.DispObject(ho_ClassRegions);}       }
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65121.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65121.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65121.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

01:C語言的本質

C語言的本質 1、ARM架構與匯編2、局部變量初始化與空間分配2.1、局部變量的初始化2.1、局部變量數組初始化 3、全局變量/靜態變量初始化化與空間分配4、堆空間 1、ARM架構與匯編 ARM簡要架構如下:CPU,ARM(能讀能寫),Flash(能讀&a…

Transformer知識梳理

Transformer知識梳理 文章目錄 Transformer知識梳理什么是Transformer?語言模型遷移學習 Transformer結構注意力層原始結構 總結 什么是Transformer? 語言模型 Transformer模型本質上都是預訓練語言模型,大部分采用自監督學習(S…

第29天:PHP應用弱類型脆弱Hash加密Bool類型Array數組函數轉換比較

#知識點: 1、安全開發-原生PHP-弱類型脆弱 2、安全開發-原生PHP-函數&數據類型 3、安全開發-原生PHP-代碼審計案例 1、 和 兩個等號是弱比較,使用進行對比的時候,php解析器就會做隱式類型轉換,如果兩個值的類型不相等就會把兩…

STM32F1學習——編碼器接口

一、編碼器接口 編碼器接口可以接收正交編碼器的信號,根據編碼器旋轉產生的正交信號脈沖,通過硬件自動控制CNT值的自增或自減,從而指出編碼器的位置、旋轉方向和旋轉速度。 每個高級定時器和通用定時器都有一個編碼器接口,他們會占…

如何刪除 Docker 中的懸虛鏡像?

在 Docker 中,懸虛鏡像(Dangling Images)是指那些沒有 標簽 且沒有被任何容器使用的鏡像。這些鏡像通常是由于構建過程中生成的中間層鏡像或未正確清理的鏡像殘留。刪除懸虛鏡像可以釋放磁盤空間并保持 Docker 環境的整潔。 1. 列出懸虛鏡像…

網絡安全的學習與實踐經驗(附資料合集)

學習資源 在線學習平臺: Hack This Site:提供從初學者到高級難度的挑戰任務,適合練習各種網絡安全技術。XCTF_OJ:由XCTF組委會開發的免費在線網絡安全網站,提供豐富的培訓材料和資源。SecurityTube:提供豐…

ts是什么、tsc是什么、tsx是什么、jsx是什么、scss是什么

一、TS (TypeScript): TypeScript 是一種由微軟開發的開源編程語言,它是 JavaScript 的一個超集,增加了類型系統和對ES6及以后版本新特性的支持。TypeScript 旨在解決 JavaScript 開發中的可維護性、可擴展性和大型項目中的復雜性問題。它允許開發者在編…

行業商機信息付費小程序系統開發方案

行業商機信息付費小程序系統,主要是整合優質行業資源,實時更新的商機信息。在當今信息爆炸的時代,精準、高效地獲取行業商機信息對于企業和個人創業者而言至關重要。 一、使用場景 日常瀏覽:用戶在工作間隙或閑暇時間&#xff0c…

[Qt] 輸入控件 | Line | Text | Combo | Spin | Date | Dial | Slider

目錄 輸入類控件 1、Line Edit 錄入個人信息 使用正則表達式驗證輸入框的數據 驗證兩次輸入的密碼一致 切換顯示密碼 2、Text Edit 獲取多行輸入框的內容 驗證輸入框的各種信號 3、Combo Box 使用下拉框模擬麥當勞點餐 從文件中加載下拉框的選項 4、Spin Box 調整…

Flink CDC 自定義函數處理 SQLServer XML類型數據 映射 doris json字段方案

Flink CDC 自定義函數處理 SQLServer XML類型數據方案 1. 背景 因業務使用SQLServer數據庫,CDC同步到doris 數倉。對于SQLServer xml類型,doris沒有相應的字段對應, 可以使用json來存儲xml數據。需要進行一步轉換。從 flink 自定義函數入手…

C語言:cJSON將struct結構體與JSON互相轉換

文章目錄 struct 轉 jsonjson 轉 struct 文檔&#xff1a; https://github.com/DaveGamble/cJSON 項目結構 . ├── libs │ ├── cJSON.c │ └── cJSON.h └── main.c示例 struct 轉 json #include "libs/cJSON.h" #include <stdio.h>// defi…

JeeSite 快速開發平臺:全能企業級快速開發解決方案|GitCode 光引計劃征文展示

投稿人GitCode ID&#xff1a;thinkgem 光引計劃投稿項目介紹 JeeSite 快速開發平臺&#xff0c;不僅僅是一個后臺開發框架&#xff0c;它是一個企業級快速開發解決方案&#xff0c;后端基于經典組合 Spring Boot、Shiro、MyBatis&#xff0c;前端采用 Beetl、Bootstrap、Admi…

2025/1/4期末復習 密碼學 按老師指點大綱復習

我們都要堅信&#xff0c;道路越是曲折&#xff0c;前途越是光明。 --------------------------------------------------------------------------------------------------------------------------------- 現代密碼學 第五版 楊波 第一章 引言 1.1三大主動攻擊 1.中斷…

【架構設計(一)】常見的Java架構模式

常見的 Java 架構模式解析 在 Java 開發領域&#xff0c;選擇合適的架構模式對于構建高效、可維護且能滿足業務需求的軟件系統至關重要。本文將深入探討幾種常見的 Java架構模式&#xff0c;包括單體架構與微服務架構、分層架構與微服務架構的對比&#xff0c;以及事件驅動架構…

opencv與halcon的差距及改進方法

本文是直接問ai獲得的結果。 在我理解中&#xff0c;這是開源軟件與商業非開源工業軟件的普遍差距特點。 商業非開源工業軟件的人員、資金、時間投入是巨大的&#xff0c;開發人員也不是普通人普通水平。 一般情況下&#xff0c;試圖通過開源軟件改吧改吧就實現彎道超車&#x…

Java 內存溢出(OOM)問題的排查與解決

在 Java 開發中&#xff0c;內存溢出&#xff08;OutOfMemoryError&#xff0c;簡稱 OOM&#xff09;是一個常見且棘手的問題。相比于數組越界、空指針等業務異常&#xff0c;OOM 問題通常更難定位和解決。本文將通過一次線上內存溢出問題的排查過程&#xff0c;分享從問題表現…

AF3 AtomAttentionEncoder類解讀

AlphaFold3的AtomAttentionEncoder 類用于處理基于原子的表示學習任務。 源代碼: class AtomAttentionEncoderOutput(NamedTuple):"""Structured output class for AtomAttentionEncoder."""token_single: torch.Tensor # (bs, n_tokens, c_…

【51單片機零基礎-chapter3:按鍵:獨立按鍵|||附帶常見C語句.邏輯運算符】

將unsigned char var0;看作溝通二進制和十進制的橋梁 var是8位,初始為0000 0000; 同時可以進行十進制的運算 邏輯運算 位運算 & 按位與(有0則0) | 按位或(有1則1) ~ 按位非 ^ 按位異或(相同則1,不同為0) <<按位左移 >>按位右移 位運算符解釋: 0011 1100 <&…

游戲如何檢測iOS越獄

不同于安卓的開源生態&#xff0c;iOS一直秉承著安全性更高的閉源生態&#xff0c;系統中的硬件、軟件和服務會經過嚴格審核和測試&#xff0c;來保障安全性與穩定性。 據FairGurd觀察&#xff0c;雖然iOS系統具備一定的安全性&#xff0c;但并非沒有漏洞&#xff0c;如市面上…

在Lua中,Metatable元表如何操作?

Lua中的Metatable&#xff08;元表&#xff09;是一個強大的特性&#xff0c;它允許我們改變表&#xff08;table&#xff09;的行為。下面是對Lua中的Metatable元表的詳細介紹&#xff0c;包括語法規則和示例。 1.Metatable介紹 Metatable是一個普通的Lua表&#xff0c;它用于…