HALCON示例程序measure_circles.hdev測量圓的半徑

HALCON示例程序measure_circles.hdev測量圓的半徑

示例程序源碼(加注釋)

  • 關于顯示類函數解釋
    dev_update_off ()
    read_image (Image, ‘circle_plate’)
    get_image_size (Image, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width / 2, Height / 2, ‘light gray’, WindowID)
    dev_set_part (0, 0, Height - 1, Width - 1)
    dev_set_line_width (3)
    dev_set_color (‘white’)
    dev_set_draw (‘margin’)
    dev_display (Image)
    set_display_font (WindowID, 14, ‘mono’, ‘true’, ‘false’)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
    dev_set_colored (12)
    dev_set_line_width (2)
    dev_set_draw (‘fill’)
  • 快速閾值分割,分割連通域,使用面積進行區域篩選,快速篩選出測量區域。
    fast_threshold (Image, Region, 200, 255, 20)
    connection (Region, ConnectedRegions)
    select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 70, 50000)
    dev_display (Image)
    dev_display (SelectedRegions)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
  • 求取邊緣,膨脹,縮減定義域,求取邊緣,分割邊緣,篩選邊緣
    boundary (SelectedRegions, RegionBorder, ‘inner_filled’)
    dilation_circle (RegionBorder, RegionDilation, 3.5)
    union1 (RegionDilation, RegionUnion)
    reduce_domain (Image, RegionUnion, ImageReduced)
    dev_clear_window ()
    dev_display (ImageReduced)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
    edges_sub_pix (ImageReduced, Edges, ‘canny’, 1.5, 10, 40)
    segment_contours_xld (Edges, ContoursSplit, ‘lines_circles’, 5, 2, 2)
    select_contours_xld (ContoursSplit, SelectedContours, ‘contour_length’, 25, 99999, -0.5, 0.5)
    count_obj (SelectedContours, NumberContours)
    gen_empty_obj (Circles)
    for i := 1 to NumberContours by 1
    select_obj (SelectedContours, ObjectSelected, i)
    • get_contour_global_attrib_xld - 返回XLD輪廓的全局屬性值。cont_approx是橢圓還是圓形?
    • get_contour_global_attrib_xld(輪廓::屬性:屬性值)
      get_contour_global_attrib_xld (ObjectSelected, ‘cont_approx’, Attrib)
      if (Attrib == 1)
      concat_obj (Circles, ObjectSelected, Circles)
      endif
  • 結束循環
    endfor
  • 合并屬于一個圓形的輪廓
    union_cocircular_contours_xld (Circles, UnionContours, rad(60), rad(10), rad(30), 100, 50, 10, ‘true’, 1)
    dev_clear_window ()
    dev_set_color (‘black’)
    dev_display (UnionContours)
    disp_continue_message (WindowID, ‘black’, ‘true’)
    stop ()
    count_obj (UnionContours, NumberCircles)
    CenterRow := []
    CenterColumn := []
    dev_clear_window ()
    dev_set_color (‘black’)
    set_display_font (WindowID, 12, ‘mono’, ‘true’, ‘false’)
    dev_display (SelectedContours)

for i := 1 to NumberCircles by 1
select_obj (UnionContours, ObjectSelected, i)
* 擬合圓形
fit_circle_contour_xld (ObjectSelected, ‘algebraic’, -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)
gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, rad(360), ‘positive’, 1.5)
dev_set_color (‘white’)
dev_display (ContCircle)
if (i == 1)
Row2 := Row + Radius * sin(rad(-45))
Column2 := Column + Radius * cos(rad(-45))
set_tposition (WindowID, Row2 - 35, Column2 + 5)
endif
if (i > 1)
exist := 0
for j := 0 to i - 2 by 1
distance_pp (Row, Column, CenterRow[j], CenterColumn[j], DistanceCenters)
if (DistanceCenters < 20)
exist := 1
endif
endfor
if (exist == 1)
Row2 := Row + Radius * sin(rad(-135))
Column2 := Column + Radius * cos(rad(-135))
set_tposition (WindowID, Row2 - 40, Column2 - 30)
else
Row2 := Row + Radius * sin(rad(-45))
Column2 := Column + Radius * cos(rad(-45))
set_tposition (WindowID, Row2 - 35, Column2 + 5)
endif
endif
disp_arrow (WindowID, Row, Column, Row2, Column2, 2)
write_string (WindowID, i)
if (i < 8)
disp_message (WindowID, ‘R’ + i + ’ = ’ + Radius′.4′,′window′,i?20,130,′black′,′false′)elsedispmessage(WindowID,′R′+i+′=′+Radius&#x27;.4&#x27;, &#x27;window&#x27;, i * 20, 130, &#x27;black&#x27;, &#x27;false&#x27;) else disp_message (WindowID, &#x27;R&#x27; + i + &#x27; = &#x27; + Radius.4,window,i?20,130,black,false)elsedispm?essage(WindowID,R+i+=+Radius’.4’, ‘window’, (i - 7) * 20, 400, ‘black’, ‘false’)
endif
CenterRow := [CenterRow,Row]
CenterColumn := [CenterColumn,Column]
endfor
dev_update_window (‘on’)

處理思路

這個例子是主要講解了distance_transform算子的應用。

后記
大家有什么問題可以向我提問哈,我看到了第一時間回復,希望在學習的路上多多結交良師益友。

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

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

相關文章

OpenTLD 未完成 - 虎頭

TLD是一種算法的簡稱&#xff0c;原作者把它叫做Tracking-Learning-Detection。搞視覺的人看到這個名字都會嚇一跳&#xff0c;很ambitious的計劃。是09年的工作&#xff0c;不算太久&#xff0c;不過也不太新。網上關于這個的資源其實很多&#xff0c;很大程度和作者開放源代碼…

C# FileSystemWatcher 在監控文件夾和文件時的用法

********************************************************************************** 第一個文章: ********************************************************************************** 概述 最近學習FileSystemWatcher的用法,它主要是監控一個文件夾,當文件夾內的文件要…

比微軟kinect更強的視頻跟蹤算法--TLD跟蹤算法介紹

TLD (Tracking-Learning-Detection)是英國薩里大學的一個捷克籍博士生在其攻讀博士學位期間提出的一種新的單目標長時間&#xff08; long term tracking &#xff09;跟蹤算法。該算法與傳統跟蹤算法的顯著區別在于將傳統的跟蹤算法和傳統的檢測算法相結合來解決被跟蹤目標在被…

HALCON示例程序measure_circuit_width_lines_gauss.hdev電路板線寬檢測

HALCON示例程序measure_circuit_width_lines_gauss.hdev電路板線寬檢測 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () read_image (Image, ‘pcb_color’) get_image_size (Image, Width, Height) dev_open_window…

一張圖看懂混合云數據同步一站式解決方案

摘要&#xff1a; 針對不同數據庫間數據實時同步難的問題&#xff0c;日前&#xff0c;阿里云宣布推出混合云數據同步一站式解決方案&#xff0c;便于廣大云產品用戶實現實時數據同步的混合云支持&#xff0c;更為方便的是&#xff0c;該功能讓本地Oracle也能實現與云上數據庫的…

分布式性能測試

Jmeter分布式測試 在使用Jmeter進行性能測試時&#xff0c;如果并發數比較大(比如最近項目需要支持1000并發)&#xff0c;單臺電腦的配置(CPU和內存)可能無法支持&#xff0c;這時可以使用Jmeter提供的分布式測試的功能。 一、Jmeter分布式執行原理&#xff1a; 1、Jmeter分布式…

互斥鎖pthread_mutex_t的使用

1. 互斥鎖創建 有兩種方法創建互斥鎖&#xff0c;靜態方式和動態方式。POSIX定義了一個宏PTHREAD_MUTEX_INITIALIZER來靜態初始化互斥鎖&#xff0c;方法如下&#xff1a; pthread_mutex_t mutexPTHREAD_MUTEX_INITIALIZER; 在LinuxThreads實現中&#xff0c;pthread_…

無效設備解決辦法

touch /etc/ini.d/FirstLoadkill 殺死槍彈柜程序 或重啟reboot轉載于:https://www.cnblogs.com/yygsj/p/5634384.html

HALCON示例程序measure_grid.hdev使用XLD分割鍵盤輪廓

HALCON示例程序measure_grid.hdev使用XLD分割鍵盤輪廓 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () read_image (Image, ‘keypad’) get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_close_window () dev_open_window…

[BZOJ3992]序列統計

DP一下&#xff0c;設$f_{i,j}$表示生成$i$個數且乘積$\%Mj$的方案數&#xff0c;則$f_{i1,l}\sum\limits_{jk\%Ml}[k\in S]f_{i,j}$ 我們很不希望DP式中下標的位置出現乘法&#xff0c;因為這樣不好轉移&#xff0c;考慮把乘法換成加法 因為模數$M$是質數&#xff0c;所以它有…

socket,TCP/IP的理解(轉)

TCP/IP 要想理解socket首先得熟悉一下TCP/IP協議族&#xff0c; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;即傳輸控制協議/網間協議&#xff0c;定義了主機如何連入因特網及數據如何再它們之間傳輸的標準&#xff0c; 從字面意思來看TCP…

最小中間和

題目描述 給定一個正整數序列a1,a2,...,an&#xff0c;不改變序列中的每個元素在序列中的位置&#xff0c;把它們相加&#xff0c;并用括號記每次加法所得的和&#xff0c;稱為中間和。編程&#xff1a;找到一種方法&#xff0c;添上n-1對括號&#xff0c;加法運算依括號順序進…

HALCON示例程序measure_metal_part_extended.hdev金屬零件尺寸測量

HALCON示例程序measure_metal_part_extended.hdev金屬零件尺寸測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () read_image (Image, ‘metal-parts/metal-parts-01’) init_visualization (Image, 3, ‘white’, ‘margin’, Width, …

雙目匹配與視差計算

立體匹配主要是通過找出每對圖像間的對應關系&#xff0c;根據三角測量原理&#xff0c;得到視差圖&#xff1b;在獲得了視差信息后&#xff0c;根據投影模型很容易地可以得到原始圖像的深度信息和三維信息。立體匹配技術被普遍認為是立體視覺中最困難也是最關鍵的問題&#xf…

JavaEE 銀聯支付之網站支付-消費類交易

以銀聯網站支付 - 消費類交易 為例 0. 大致邏輯 前端request->后臺封裝參數->后臺進行簽名->生成跳轉頁面&#xff08;包含表單提交內容&#xff09;->響應前端&#xff08;將生成的html寫到瀏覽器中完成自動跳轉打開銀聯支付頁面&#xff09; 復制代碼1.acp_sdk.p…

react 開發知識準備

react react使用教程 babel babel 可用于ES6轉換為ES5&#xff0c;jsx轉換為原生js。 ES6 ES6 語法 webpack webpack打包工具&#xff0c;它把不同的、相互依賴的靜態資源都視作模塊&#xff0c;并且打包成我們想要的靜態資源。讓代碼組織更清晰&#xff0c;一個文件就是一個模…

Linux多線程編程(不限Linux)

——本文一個例子展開&#xff0c;介紹Linux下面線程的操作、多線程的同步和互斥。 前言 線程&#xff1f;為什么有了進程還需要線程呢&#xff0c;他們有什么區別&#xff1f;使用線程有什么優勢呢&#xff1f;還有多線程編程的一些細節問題&#xff0c;如線程之間怎樣同步、…

概率論與數理統計-ch8-假設檢驗

1、假設檢驗 在總體的分布函數未知或只知其形式、不知其參數的情況下&#xff0c;為了推斷總體的某些未知特性&#xff0c;提出關于總體的假設&#xff0c;然后根據樣本數據對提出的假設做出接受或拒絕的決策。 步驟&#xff1a; 提出原假設--確定建立在樣本基礎上的檢驗統計量…

HALCON示例程序measure_metal_part_first_example.hdev通過擬合邊緣進行尺寸測量

HALCON示例程序measure_metal_part_first_example.hdev通過擬合邊緣進行尺寸測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () read_image (Image, ‘metal-parts/metal-parts-01’) get_image_size (Image, Width, Height) dev_close…

簡單實現仿某寶地址選擇三級聯動樣式

內容簡單介紹實現步驟第一步 找準方向第二步 開干總結還是題外話內容簡單介紹 簡單看一下須要實現的效果&#xff0c;如圖&#xff1a; 實現步驟 第一步 找準方向 事實上就是想好要用recyclerview而不是listview。假設要問我recyclerview是什么的話。。 第二步 開干 首先須要先…