[機器視覺]halcon應用實例 多ROI模板匹配

本示例是單ROI的功能擴展示例,多ROI.后面有空了將出用戶自定義ROI。

比單ROI增加ROI區域的連接和合并。還有for的實例應用。步驟同單ROI一樣。不懂的可以看一下單ROI文章。[機器視覺]halcon應用實例 單ROI模板匹配-CSDN博客

有需要的可以【點贊】【關注】【收藏】【訂閱】

dev_set_color ('red')
dev_set_draw ('margin')
*獲取窗口句柄對象
dev_get_window (WindowHandle)
*讀取圖片
read_image (Image, 'E:/stevenChen/機器視覺學習/HDevelop/視覺圖片/ROI/1.bmp')*多ROI 
*選取ROI
*第一個ROI
*畫矩形1
*參數說明
*WindowHandle (輸入參數)窗口句柄
*Row1, Column1 (輸出參數)矩形的左上角坐標
*Row2, Column2 (輸出參數)矩形的右上角坐標
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
*生成矩形1
*根據上面算子的輸出參數生成一個矩形
*Rectangle 輸出參數,生成的矩形
*Row1, Column1 (輸入參數)矩形的左上角坐標
*Row2, Column2 (輸入參數)矩形的右上角坐標
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)*-------------------
*第二個ROI
*畫矩形
draw_rectangle1 (WindowHandle, Row10, Column10, Row20, Column20)
*生成矩形
*根據上面算子的輸出參數生成一個矩形
gen_rectangle1 (Rectangle10, Row10, Column10, Row20, Column20)
*連接兩個對象,ObjectsConcat = [Objects1,Objects2]
*參數列表:
*第1個參數Objects1是輸入對象,即對象1
*第2個參數Objects2是輸入變量,即對象2
*第3個參數ObjectsConcat是輸出變量,即連接后的區域
*concat_obj (Rectangle, Rectangle10, ObjectsConcat)
*union2
*union2()——將兩個區域合并成一個整體,僅限兩個
*函數原型:union2(Region1(輸入), Region2(輸入) : RegionUnion(輸出) : : )
*功能:將Region2 和Region1元組內的區域合并成一個獨立的區域保存于RegionUnion 。把第二個參數Region2里的所有區域合并,然后將合并后的區域分別與Region1中的每一個區域進行合并,然后保存到RegionUnion 中。最后,RegionUnion 元素個數與Region1元素個數相同。
*參數:
*Region1 (input_object) ——要與Region2中的所有區域的并集計算的區域
*Region2 (input_object) ——要添加到Region1的區域
*RegionUnion (output_object) ——(輸出)最終得到的區域
*      要素數::RegionUnion == Region1
union2 (Rectangle, Rectangle10, RegionUnion1)
*-------------------
*第三個ROI
*畫矩形
draw_rectangle1 (WindowHandle, Row100, Column100, Row200, Column200)
*生成矩形
*根據上面算子的輸出參數生成一個矩形
gen_rectangle1 (Rectangle100, Row100, Column100, Row200, Column200)
*concat_obj (Rectangle100, ObjectsConcat, ObjectsConcatAll)*把所有的輸入區域合并為一個區域
*功能:函數將Region元組內的全部區域合并成一個獨立的區域,保存于RegionUnion
*參數:
*Region (input_object) ——要計算其并集的區域,也就是一個個的輸入區域
*RegionUnion (output_object) ——所有輸出區域的并集*要素數: RegionUnion <= Region
*union1 (Rectangle100, RegionUnionAll)
union2 (RegionUnion1, Rectangle100, RegionUnionAll)*鎖定ROI并創建模板
*單ROI
*獲得特定區域Region位置的圖像,獲取區域圖像
*Image (輸入參數)輸入的圖像
*Rectangle 輸入參數)輸入的區域,上面畫的矩形區域
*ImageReduced (輸出參數)輸出的圖像,是Image中Rectangle的那部分圖像
reduce_domain (Image, RegionUnionAll, ImageReduced)*用于創建形狀模板
*形狀模板是一種用于檢測和匹配特定形狀的工具,常用于目標識別、物體定位和測量等應用中。
*參數說明:
*ObjectModel:包含待創建模板的形狀的二值圖像。
*NumLevels:金字塔層數,用于多尺度匹配。可設為“auto”或0—10的整數
*AngleStart:起始角度(以度為單位),用于模板的旋轉范圍。rad(-180)
*AngleExtent:旋轉角度的范圍(以度為單位)。rad(-180), rad(180)表示360度匹配
*AngleStep:旋轉角度的步長,可以是’auto’或具體的值。
*ScaleMin:最小縮放比例。
*ScaleMax:最大縮放比例。
*ScaleStep:縮放比例的步長。
*Optimization:優化模式,用于加速模板匹配。
*Metric:模板匹配的度量方式。
*Contrast:對比度增強系數。
*MinContrast:最小對比度閾值。
*ModelID:輸出的模板ID。
*https://blog.csdn.net/xiaogongzhu001/article/details/131120014
*1.NumLevels(金字塔的層數),金字塔的層數越大,找到匹配使用的時間就越小。(金字塔的層數越大,提取到的特征越少,精準度越低,所以對應的識別時間少)
*如果金字塔的層數設置的太大,模板不容易識別出來,這是需要將find_shape_model函數中MinScore和Greediness參數設置的低一些。
*參數解析及優化 https://blog.csdn.net/the_future_way/article/details/115345989
*create_shape_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
create_shape_model (ImageReduced, 'auto', rad(-180), rad(180), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*-----模板創建結束----------------------------------*-----開始測試----------------------------------------------*圖片文件夾
imageDir := 'E:/stevenChen/機器視覺學習/HDevelop/視覺圖片/ROI'*獲取文件列表
list_files (imageDir, ['files','follow_links','recursive'], ImageFiles)*可以用for算子把文件一個一個打開
for Index := 0 to |ImageFiles| - 1 by 1*從文件集合中獲取指定索引的數據imagePath := ImageFiles[Index]    *判斷文件是否存在,存在返回true,否則返回false*imagePath 輸入參數:要判斷的文件路徑*FileExists 輸出參數: 輸出文件是否存在,存在返回true,否則返回falsefile_exists (imagePath, FileExists)if (FileExists)*顯示文本消息dev_close_window ()*讀取圖片read_image (Image, imagePath)  get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowHandle)dev_display (Image)*4.加載測試圖像*read_image (Image1, 'E:/stevenChen/機器視覺學習/HDevelop/視覺圖片/ROI/12.bmp')*5.使用已有模板句柄來匹配*形狀模板匹配*形狀匹配原理:模板創建后,會根據模板中的邊緣等關系去圖像中進行搜索,可以理解成提取模板中的灰度發生變化的那些點,*然后再去圖像中匹配,這樣的效果是對干擾比較穩定,匹配速度快,并且即使邊緣發生部分遮擋,匹配效果依舊較好*參數說明*參數1:輸入圖像--單通道圖像*參數2:模板句柄*參數3:搜索時的起始角度 rad(-180), rad(180) 正好是一圈*參數4:搜索時的終止角度,必須與創建模板時的有交集 *參數5:被找到的模板最小分數--大于等于這個值才能被匹配*      默認值:0.5      建議值:0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0*      典型值范圍:0≤MinScore ≤ 1*      最小增量:0.01       建議增量:0.05*參數6:要找到的模板最大實例數*參數7:要找到的模型實例的最大重疊*      默認值:0.5       建議值:0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0*      典型值范圍:0≤ MaxOverlap≤ 1      最小增量:0.01     建議增量:0.05*參數8:計算精度的設置*        'none', 'interpolation', 'least_squares', 'least_squares_high', 'least_squares_very_high'*        'max_deformation 1', 'max_deformation 2', 'max_deformation 3', 'max_deformation 4'*        'max_deformation 5', 'max_deformation 6'*參數9:搜索時金字塔的層級*參數10:貪婪度,搜索啟發式,一般都設為0.8,越高速度快,容易出現找不到的情況*       0≤ Greediness ≤ 1   *最后4個:輸出匹配位置的行和列坐標、角度、得分 【中心坐標】*https://blog.51cto.com/liming19680104/5152387
*        find_shape_model (Image1, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)find_shape_model (Image, ModelID, rad(-180), rad(180), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)*6.把匹配輪廓顯示到圖像中*ModelContours 輸出參數,匹配到的模塊輪廓,*ModelID 輸入參數,模板ID,*Level 金字塔層數get_shape_model_contours(ModelContours, ModelID, 1)*從點和角度計算剛性仿射變換*參數:*Row1 (輸入參數) ——原始點的行坐標*Column1 (輸入參數) ——原始點的列坐標*Angle1 (輸入參數) ——原始點的角度*Row2 (輸入參數) ——轉換點的行坐標*Column2 (輸入參數) ——轉換點的列坐標*Angle2 (輸入參數) ——轉換點的角度*HomMat2D (輸出參數) ——輸出轉換矩陣*原文鏈接:https://blog.csdn.net/m0_51271525/article/details/121017373vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)*ength := tuple_length (row,len)tuple_length (Row, rowLength)if(rowLength > 0)*仿射變換輪廓*對XLD輪廓進行任意仿射2D變換*將任意仿射2D變換,即縮放、旋轉、平移和傾斜(傾斜)應用于輪廓中給定的xld輪廓,并以ContoursAffineTrans的形式返回變換后的輪廓*參數:*Contours (輸入參數) ——輸入XLD輪廓。*ContoursAffineTrans (輸出參數) ——轉換后的XLD輪廓*HomMat2D (輸入參數) ——輸入轉換矩陣affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)*顯示結果dev_display (Image)dev_set_color ('green')dev_display (ContoursAffineTrans)elsedisp_message (WindowHandle, '沒有匹配到ROI', 'window', 12, 12, 'black', 'true')endifelsedisp_message (WindowHandle, '圖片-不存在->路徑:'+imagePath, 'window', 12, 12, 'black', 'true')endif
endfor
*釋放模板句柄
clear_shape_model (ModelID)

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

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

相關文章

2024年新提出的算法|LEA愛情進化算法(Love Evolution Algorithm)

Love Evolution Algorithm: a stimulus–value–role theory-inspired evolutionary algorithm for global optimization 愛情進化算法Love Evolution Algorithm&#xff0c;LEA&#xff0c;于2024年2月發表在中科院3區SCI期刊 The Journal of Supercomputing。 1、簡介 本文提…

幸運星數(爺再也不想用pow了)

解法&#xff1a; 暴力 #include <iostream> #include <vector> using namespace std; #define endl \nint main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int n;long long sum 0, a;cin >> n;for (int i 1; i < n; i) {a 1;for (in…

#python升級#CentOS 7 python升級到3.11.6

在 CentOS 7 上升級 Python 版本可能會比較復雜&#xff0c;因為 CentOS 7 默認安裝的是 Python 2.7&#xff0c;并且系統很多組件依賴于它。不過&#xff0c;可以通過以下步驟嘗試升級到 Python 3.11.6&#xff1a; 安裝必要的依賴&#xff1a; sudo yum install gcc openssl-…

洛谷P1015回文數

題目描述 若一個數&#xff08;首位不為零&#xff09;從左向右讀與從右向左讀都一樣&#xff0c;我們就將其稱之為回文數。 例如&#xff1a;給定一個十進制數 5656&#xff0c;將 5656 加 6565&#xff08;即把 5656 從右向左讀&#xff09;&#xff0c;得到 121121 是一個…

藍橋杯刷題2

1. 修建灌木 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();for (int i 1;i < n1;i){int distance Math.max(i-1,n-i);System.out.println(distance*2);}scan.close…

軟件設計師軟考題目解析12 --每日五題

想說的話&#xff1a;要準備軟考了。0.0&#xff0c;其實我是不想考的&#xff0c;但是吧&#xff0c;由于本人已經學完所有知識了&#xff0c;只是被學校的課程給鎖在那里了&#xff0c;不然早找工作去了。尋思著反正也無聊&#xff0c;就考個證玩玩。 本人github地址&#xf…

種花

分情況&#xff1a; 第一盆k種選擇&#xff0c;之后全部k-1種選擇 每次相乘結果對1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…

微信小程序iOS禁止上下拉顯示白邊

先上圖暴露出問題 iOS端這個頁面明明正好顯示的&#xff0c;非要能下拉上拉給顯示出來點白邊。這樣不就不好看了嘛。。 想了想是不是支持頁面下拉導致的&#xff0c;加入以下代碼到json文件中。 {"enablePullDownRefresh": false,"usingComponents": {} }…

java009 - Java面向對象基礎

1、類和對象 1.1 什么是對象 萬物皆對象&#xff0c;客觀存在的事物皆為對象。 1.2 什么是面向對象 1.3 什么是類 類是對現實生活中一類具有共同屬性和行為的事物抽象。 特點&#xff1a; 類是對象的數據類型類是具有相同屬性和行為的一組對象的集合 1.4 什么是對象的屬…

project.config.json 文件內容錯誤] project.config.json: libVersion 字段需為 string, string

家人們&#xff0c;遇到了一個新的報錯 于是從網上找了各種方法&#xff0c;有說把開發者工具關閉重啟的&#xff0c;有說開發者工具下載重新下載的&#xff0c;有說開發者工具路徑安裝得在C盤的&#xff0c;均沒有效果 解決方法&#xff1a; 1、運行項目&#xff0c;在開發者…

[安洵杯 2019]easy_serialize_php1

打開題目 題目源碼&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&q…

好的測試數據管理,到底要怎么做?

你的組織是否實施了測試數據管理&#xff1f;如果你的組織處理關鍵或敏感的業務數據&#xff0c;測試數據管理肯定會讓組織受益。與測試數據相關的問題占所有軟件缺陷的 15%&#xff0c;這一事實強調了測試數據的重要性。本文將準確討論測試數據經理職責、測試數據經理需要什么…

java-ssm-jsp廣播劇制作訂閱系統

java-ssm-jsp廣播劇制作訂閱系統 獲取源碼——》公主號&#xff1a;計算機專業畢設大全

AFL fork server和fuzzer的交互

看了一些博客&#xff0c;都是在說fuzzer和fork server進行交互&#xff0c;由fork server fork出子進程來執行程序&#xff0c;但是不太明白這兩者到底是如何在代碼層面進行交互的。 run_target中有這么一段代碼&#xff0c;大概意思是fuzzer給fork server傳遞prev_timed_out…

13.網絡游戲逆向分析與漏洞攻防-網絡通信數據包分析工具-如果沒有工具就創造工具

內容參考于&#xff1a; 易道云信息技術研究院VIP課 上一個內容 &#xff1a;12.游戲網絡通信存在的問題 現在把游戲網絡的架構看了一個小小的大概&#xff0c;可以用它的接口發數據接收數據了&#xff0c;如果真正想用它這一套東西&#xff0c;真正核心不在于它的接口而在于…

2024GAS《聲學大講堂》

由中國電子音響行業協會主辦&#xff0c;上海市浦東新區先進音視頻技術協會承辦的GAS《聲學大講堂》2021年開播&#xff0c;三年來GAS《聲學大講堂》開設了“沉浸聲音頻與藝術”、“智能車載音頻”、“智能可穿戴”、“智能耳機”、“智能音箱”、“專業音響”、“助聽/輔聽設備…

老衛帶你學---leetcode刷題(268. 丟失的數字)

268. 丟失的數字 問題 給定一個包含 [0, n] 中 n 個數的數組 nums &#xff0c;找出 [0, n] 這個范圍內沒有出現在數組中的那個數。 示例 1&#xff1a; 輸入&#xff1a;nums [3,0,1] 輸出&#xff1a;2 解釋&#xff1a;n 3&#xff0c;因為有 3 個數字&#xff0c;所以…

R語言安裝和簡單入門HelloWorld用法

R語言安裝和簡單入門HelloWorld用法 #R語言安裝地址 https://www.r-project.org/ click->CRAN mirror->選擇China下列表&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/CRAN/ 選擇Download R for Windows 選擇base Download R-4.3.2 for Windows 下載文件R-4.3.2-…

怎么重構數據庫表結構

重構數據庫表結構是指對已有的數據庫表進行調整和優化&#xff0c;以提高數據庫的性能、可擴展性和可維護性。以下是一些重構數據庫表結構的常見步驟&#xff1a; 分析現有表結構&#xff1a;首先&#xff0c;仔細分析現有的數據庫表結構&#xff0c;了解表之間的關系和依賴關…

數據結構從入門到精通——算法的時間復雜度和空間復雜度

算法的時間復雜度和空間復雜度 前言一、算法效率1.1 如何衡量一個算法的好壞1.2 算法的復雜度 二、時間復雜度2.1 時間復雜度的概念2.2 大O的漸進表示法2.3常見時間復雜度計算舉例2.4等差數列計算公式2.5等比數列計算方法 三、空間復雜度四、 常見復雜度對比五、 復雜度的oj練習…