halcon聯合C#測量十字Mark中心

halcon聯合C#測量十字Mark中心

函數說明

public void FitRectangleMeasure(HWindow 窗口句柄, HImage 圖像, out double 中心Y坐標, out double 中心X坐標)

操作步驟,首先繪制兩個矩形測量框;之后就可進行自動計算。

public void FitRectangleMeasure(HWindow hWindow, HImage hImage, out double Row, out double Col){try{int rtCount = 2;double[] rtRows = new double[rtCount];double[] rtCols = new double[rtCount];double[] rtAngles = new double[rtCount];double[] rtLen1s = new double[rtCount];double[] rtLen2s = new double[rtCount];hWindow.SetColor("red");hWindow.SetDraw("margin");HTuple hv_Row1, hv_Column1, hv_Row2, hv_Column2, hv_RectangleParameter;//繪制測量矩形for (int rtIndex = 0; rtIndex < rtCount; rtIndex++){HOperatorSet.DrawRectangle1Mod(hWindow, 1000, 1000, 1200, 1200, out hv_Row1, out hv_Column1, out hv_Row2, out hv_Column2);double dRowCenter = (hv_Row1.D + hv_Row2.D) / 2;double dColCenter = (hv_Column1.D + hv_Column2.D) / 2;double dL1 = (hv_Column2.D - hv_Column1.D) / 2;double dL2 = (hv_Row2.D - hv_Row1.D) / 4;rtRows[rtIndex] = dRowCenter;rtCols[rtIndex] = dColCenter;rtAngles[rtIndex] = 0;rtLen1s[rtIndex] = dL1;rtLen2s[rtIndex] = dL2;}//測量寬度int nHalfBorder = (int)(Math.Min(rtLen1s[0], rtLen2s[0]) + Math.Min(rtLen1s[1], rtLen2s[1])) / 2;//矩形測量句柄的創建HTuple hv_MetrologyHandle = null, hv_MetrologyRectangleIndices = null;HOperatorSet.CreateMetrologyModel(out hv_MetrologyHandle);HOperatorSet.AddMetrologyObjectRectangle2Measure(hv_MetrologyHandle, new HTuple(rtRows),new HTuple(rtCols), new HTuple(rtAngles), new HTuple(rtLen1s), new HTuple(rtLen2s), nHalfBorder, nHalfBorder / 4,1, 10, new HTuple(), new HTuple(), out hv_MetrologyRectangleIndices);HOperatorSet.SetMetrologyObjectParam(hv_MetrologyHandle, hv_MetrologyRectangleIndices, "num_instances", 1);HOperatorSet.SetMetrologyObjectParam(hv_MetrologyHandle, hv_MetrologyRectangleIndices, "min_score", 0.1);HOperatorSet.SetMetrologyObjectParam(hv_MetrologyHandle, hv_MetrologyRectangleIndices, "measure_transition", "uniform");HOperatorSet.ApplyMetrologyModel(hImage, hv_MetrologyHandle);//測量出的信息HObject ho_MeasureContours;//測量框 HObject ho_Cross;   //測量出來的交界點HOperatorSet.GenEmptyObj(out ho_MeasureContours);HOperatorSet.GenEmptyObj(out ho_Cross);ho_MeasureContours.Dispose();ho_Cross.Dispose();HOperatorSet.GetMetrologyObjectMeasures(out ho_MeasureContours, hv_MetrologyHandle, "all", "all", out hv_Row1, out hv_Column1);HOperatorSet.GenCrossContourXld(out ho_Cross, hv_Row1, hv_Column1, 20, 0.785398);hWindow.DispObj(ho_MeasureContours);//hWindow.DispObj(ho_Cross);HOperatorSet.GetMetrologyObjectResult(hv_MetrologyHandle, "all", "all", "result_type","all_param", out hv_RectangleParameter);//測量出來的矩形框HObject ho_ResultContour;HOperatorSet.GenEmptyObj(out ho_ResultContour);ho_ResultContour.Dispose();HOperatorSet.GetMetrologyObjectResultContour(out ho_ResultContour, hv_MetrologyHandle, "all", "all", 1.5);hWindow.DispObj(ho_ResultContour);//測量出矩形的數據HTuple hv_Sequence, hv_RectangleRow, hv_RectangleColumn, hv_RectanglePhi, hv_RectangleLength1, hv_RectangleLength2;hv_Sequence = HTuple.TupleGenSequence(0, (new HTuple(hv_RectangleParameter.TupleLength())) - 1, 5);hv_RectangleRow = hv_RectangleParameter.TupleSelect(hv_Sequence);hv_RectangleColumn = hv_RectangleParameter.TupleSelect(hv_Sequence + 1);hv_RectanglePhi = hv_RectangleParameter.TupleSelect(hv_Sequence + 2);hv_RectangleLength1 = hv_RectangleParameter.TupleSelect(hv_Sequence + 3);hv_RectangleLength2 = hv_RectangleParameter.TupleSelect(hv_Sequence + 4);if (hv_RectangleRow.TupleLength() == rtCount){Row = (hv_RectangleRow[0].D + hv_RectangleRow[1].D) / 2;Col = (hv_RectangleColumn[0].D + hv_RectangleColumn[1].D) / 2;}else{Row = 0;Col = 0;}HOperatorSet.ClearMetrologyModel(hv_MetrologyHandle);//釋放HObjectho_MeasureContours.Dispose();ho_Cross.Dispose();ho_ResultContour.Dispose();}catch{Row = 0;Col = 0;}}

不懂的話可以問我哦,下邊評論看到了第一時間回復。如果覺得有用點贊哦。

PS

我的博客不定時分享日常工作中覺得有價值的內容,包括C#、C++、halcon、運動控制等等內容,喜歡的點贊,關注我。

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

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

相關文章

x264 struct 學習

x264_t結構體維護著CODEC的諸多重要信息其中成員frames是一個指示和控制幀編碼過程的結構。其中current是已經準備就緒可以編碼的幀&#xff0c;其類型已經確定&#xff1b;next是尚未確定類型的幀&#xff1b;unused用于回收不使用的frame結構體以備今后再次使用。 structx26…

單例模式的新實現

單例模式的新實現 jdk1.5 之前 單例模式的兩種方式&#xff0c;兩種方法都是要把構造器保持私有的&#xff0c;并導出公有的靜態成員&#xff0c;以便允許客戶端能夠訪問該類的唯一實例。 第一種方法中&#xff0c;公有的靜態成員是個final域: //Singleton with public final f…

有關莫比烏斯反演

對于兩個定義域為整數的函數F(x)和f(x); 若有: 然后F(x)可以快速求出&#xff1b; 如何用F求解f呢&#xff1f; 莫比烏斯反演&#xff1a; 對于兩個定義域為整數的函數F(x)和f(x); 若有: 則有&#xff1a; 其中μ(x)為莫比烏斯函數&#xff0c;其定義為&#xff1a; 對于&#…

(原創)JS點擊事件——Uncaught TypeError: Cannot set property 'onclick' of null

html部分代碼&#xff1a; JS部分代碼&#xff1a; 需要實現的效果&#xff1a;點擊圖片&#xff0c;來回相互切換。 我開始的錯誤做法&#xff1a;代碼如上圖所示&#xff08;邏輯上看起來是沒有錯誤的&#xff09; 嘗試過程&#xff1a;把JS代碼放在</body>閉合標簽之前…

事務傳播機制/數據庫異常解析——2016-8-13分享總結

一. 事務的傳播機制&#xff0f;required 跟 required new 的使用與區別 基礎回顧 1.1 事務的隔離級別&#xff1a; ISOLATION_READ_UNCOMMITTED&#xff08;讀未提交&#xff09; ISOLATION_READ_COMMITTED&#xff08;讀已提交&#xff09; ISOLATION_REPEATABLE_READ&#x…

console類詳細解釋

console類詳細解釋 微軟鏈接https://docs.microsoft.com/zh-cn/dotnet/api/system.console?viewnetframework-4.8 C#中沒有標準輸入輸出關鍵字&#xff0c;要調用console類下的方法。 練習與解釋代碼 using System; using System.Collections.Generic; using System.Linq; …

VC下調用x264進行視頻編碼,

4.X264.c中,h x264_encoder_open( param ) )是用來復制參數并驗證參數的有效性,在CCS下應該是不需要驗證參數的(參數都是在程序中設置好的),因此此處只作復制參數param和初始化X264_T h的操作.(VC下程序修改記錄080106下午)修改COMMON.C中的void x264_param_default( x264_…

UploadRTOS.exe

UploadRTOS.exe類似于一個啟動并為VxWin運行做準備的工具程序。VxWin安裝之后&#xff0c;可以使用 上傳工具程序 啟動實時操作系統。 利用命令行參數,您可以使它執行不同的功能。該 上傳工具程序 包含兩個文件: UploadRTOS.exe (命令行程序) UploadR…

20155307 2016-2017 《Java程序設計》第三次實驗報告

&#xff08;一&#xff09;敏捷開發與XP 敏捷開發是一種以人為核心、迭代、循序漸進的開發方法。“敏捷流程”是一系列價值觀和方法論的集合。從2001年開始&#xff0c;一些軟件界的專家開始倡導“敏捷”的價值觀和流程&#xff0c;他們肯定了流行做法的價值&#xff0c;但是強…

ElasticSearch創建、修改、獲取、刪除、索引Indice mapping和Index Template案例

為什么80%的碼農都做不了架構師&#xff1f;>>> The best elasticsearch highlevel java rest api-----bboss ElasticSearch客戶端框架bboss的ClientInterface 接口提供了創建/修改、獲取、刪除索引Indice和IndexTemplate的方法&#xff0c;本文舉例說明其使用方法…

ASCII碼與string的相互轉換

ASCII碼與string的相互轉換 思路&#xff1a; 1&#xff09;ASCII碼轉string&#xff1a;把字符&#xff08;串&#xff09;直接轉換為int類型&#xff0c;即可得到ASCII碼&#xff1b; 2&#xff09;string轉ASCII碼&#xff1a;將數字轉換為字符串轉出&#xff1b; {//將字…

X264代碼中一些參數的意義

Main&#xff08;int argc&#xff0c;char *argv[]&#xff09;; 為了方便起見&#xff0c;不妨改寫為&#xff1a; Main(void){ ...... intargc5; char*argv[]{ "main","-o","test.264","foreman.yuv","352x288" }; …

spring mvc注解@RequestMapping

1、url路徑映射 基本功能 2、窄化請求映射 根路徑子路徑 注意setViewName的路徑。 3、限制http請求方法 get和 post 如果是get 轉載于:https://www.cnblogs.com/jway1101/p/5773923.html

Start application automatically during controller boot-up

&#xfeff;&#xfeff; Tip English ?German Start application automatically during controller boot-up Description It is possible to start any program automatically during the boot-up procedure of the KR C4 controller. Precondition ?User group “Exper…

C#using static

平常用法&#xff1a; using 命名空間&#xff1b; using System; Console.WriteLine("Hello&#xff0c;World&#xff01;");using static用法&#xff1a; C#6中支持這種寫法&#xff0c;這樣定義后可以可以訪問類的靜態成員 WriteLine是Console類的靜態函數&am…

redis數據遷移

一&#xff1a;AOF方式 需求&#xff1a; 一個沒有數據的redis。 清空redis數據方法 bash> echo "keys *" | redis-cli --raw -p 6378 |sed -r s/(.*)/redis-cli --raw -p 6378 del \1 /g |bash 1.備份 bash> redis-cli --raw -p 6378 redis> config get di…

阿里云OSS 上傳文件SDK

Aliyun OSS SDK for C# 上傳文件 另外&#xff1a;查找的其他實現C#上傳文件功能例子&#xff1a; 1、WPF用流的方式上傳/顯示/下載圖片文件(保存在數據庫) &#xff08;文末有案例下載鏈接&#xff09; 2、WPF中利用WebClient向服務器上傳文件 3、C#文件上傳的簡單實現 4、C#實…

關于level_idc和Profile_IDC的解釋

2010-01-21 15:51:40| 分類&#xff1a; windows mobile開 |字號 訂閱 Description: Set bitstream Profile IDC. Default is 88. Note: Some profiles cannot support certain features. See MPEG-4 AVC for supported features for each profile. Reference software may…

老婆的駕照要下來了,形容下我此刻的心情

&#xfeff;&#xfeff; 老婆的駕照要下來了&#xff0c;形容下我此刻的心情&#xff1a; 路上遇到的女人&#xff0c;大部分是不用眼睛和腦子開車的&#xff0c;完全是憑自己的感覺開車。凡是看到前車奇慢、路口猶豫不決、不打燈緩慢變線、不該…

ADO.NET改進防注入

static void Main1(string[] args) { //用戶輸入一個需要查詢的條件 car表 Console.WriteLine("請輸入"); string code Console.ReadLine(); SqlConnection conn new SqlConnection("server.;databasemydb;usersa;pwd100867"); SqlCommand cmd conn.Crea…