日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > ChatGpt >内容正文

ChatGpt

Halcon知识:如何求一个工件的粗细

發布時間:2025/3/21 ChatGpt 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Halcon知识:如何求一个工件的粗细 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、說明

在實際應用中,有時需要求一個物件的粗細;本文用最簡單的方法,給出示范,并對關鍵幾個函數給以說明。如圖,假定我們有如下圖物品,求其寬度。

?二、程序代碼

dev_set_color ('red') read_image(Image,'D:/images/reglist/scrw.jpg') rgb1_to_gray(Image, Gmage)WindowWidth := 640 WindowHeight := 540 dev_open_window_fit_size (0, 0, WindowWidth, WindowHeight, -1, -1, WindowHandle1)threshold(Gmage, Region, 10, 75)fill_up(Region,RegionFillUp) get_region_thickness (RegionFillUp, Thickness, Histogramm) area_center (RegionFillUp, Area, Row, Column) elliptic_axis (RegionFillUp, Ra, Rb, Phi) StartRow := Row + sin(Phi) * Ra StartColumn := Column - cos(Phi) * Ra EndRow := Row - sin(Phi) * Ra EndColumn := Column + cos(Phi) * Ra dev_set_color ('yellow') disp_line (WindowHandle1, StartRow, StartColumn, EndRow, EndColumn)dev_open_window (0, WindowWidth + 10, 660, WindowHeight, 'black', WindowHandle2) plot_tuple (WindowHandle2, [], Thickness, [], [], 'red', ['style','margin_top'], ['line',WindowHeight * 0.2]) disp_message (WindowHandle2, 'Thickness along the main axis', 'window', 12, 12, 'black', 'true')

輸出效果圖:

??

三、代碼說明

3.1 讀入圖像并二值化

dev_set_color ('red')
read_image(Image,'D:/images/reglist/scrw.jpg')? ?讀圖像
rgb1_to_gray(Image, Gmage)? ? ? ? 轉成灰度

WindowWidth := 640
WindowHeight := 540
dev_open_window_fit_size (0, 0, WindowWidth, WindowHeight, -1, -1, WindowHandle1)?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 預備一個窗口

threshold(Gmage, Region, 10, 75)? ? 二值化區域

fill_up(Region,RegionFillUp)? ? ? ? ? 填充區域內部空洞

3.2 橢圓區域處理

get_region_thickness (RegionFillUp, Thickness, Histogramm) area_center (RegionFillUp, Area, Row, Column) elliptic_axis (RegionFillUp, Ra, Rb, Phi)

以上代碼將區域假定為橢圓擬合,求出沿主軸的一些屬性:

  • get_region_thickness (RegionFillUp, Thickness, Histogramm)

運算符 get_region_thickness 計算截面中每個像素沿主軸(參見 elliptic_axis)的區域厚度。主軸上某一點處的厚度定義為輪廓與主軸上鉛垂在相應點上相距最遠的交點之間的距離。此外,運算符 get_region_thickness 返回區域厚度的直方圖。直方圖的長度對應于觀察區域中出現的最大厚度。

Histogramm:的數據結構

  • area_center (RegionFillUp, Area, Row, Column)

運算符 area_center 計算輸入區域的面積和中心。面積定義為一個區域的像素數。中心分別計算為所有像素的行坐標或列坐標的平均值。

如果傳遞了多個區域,則結果存儲在元組中,元組中值的索引對應于輸入區域的索引。在空白區域的情況下,如果沒有設置其他行為,則所有參數的值都為 0.0(參見 set_system)。

  • elliptic_axis (RegionFillUp, Ra, Rb, Phi)
算子 elliptic_axis 計算與 Regions 中的輸入區域具有相同方向和相同縱橫比的橢圓的半徑 Ra 和 Rb 以及方向 Phi。幾個輸入區域可以作為元組傳遞。 Ra 代表橢圓的主半徑,而半徑 Rb 代表橢圓的次半徑。主軸相對于 x 軸的方向以 Phi 返回,以弧度表示。橢圓的主軸相當于輸入區域的慣性矩的主軸。 如果矩,, 和 被歸一化并傳遞到該區域(請參閱 moment_region_2nd),則半徑 Ra 和 Rb 計算為:

如果傳遞了多個區域,則結果將存儲在元組中。結果元組元素的索引對應于相應輸入區域的索引。?

3.3 畫出主軸線

這里是從中心點為基點,輔助軸偏角畫出軸線?

StartRow := Row + sin(Phi) * Ra StartColumn := Column - cos(Phi) * Ra EndRow := Row - sin(Phi) * Ra EndColumn := Column + cos(Phi) * Ra dev_set_color ('yellow') disp_line (WindowHandle1, StartRow, StartColumn, EndRow, EndColumn)

3.4 畫出直方圖

dev_open_window (0, WindowWidth + 10, 660, WindowHeight, 'black', WindowHandle2) plot_tuple (WindowHandle2, [], Thickness, [], [], 'red', ['style','margin_top'], ['line',WindowHeight * 0.2]) disp_message (WindowHandle2, 'Thickness along the main axis', 'window', 12, 12, 'black', 'true')
  • plot_tuple( : : WindowHandle, XValues, YValues, XLabel, YLabel, Color, GenParamNames, GenParamValues : )

該算子將輸入的 “x元組,等長度的y元組”,畫出其函數的曲線:

XValues:要繪制的函數的 X 值。

如果 XValues 設置為 [],則將其內部設置為 0,1,2,...,|YValues|-1。
如果 XValues 是字符串元組,則將這些值視為類別。

YValues:要繪制的函數的 Y 值。

如果 YValues 設置為 [],則它內部設置為 0,1,2,...,|XValues|-1。
y 值的數量必須等于 x 值的數量
或整數倍。在后一種情況下,
繪制了多個函數,它們共享相同的 x 值。

XLabel: X axis label.

XLabel: Y axis label.

color:繪制函數的顏色。
如果給出 [],則使用當前設置的顯示顏色。 如果給出'none',則不繪制函數,而僅繪制 指定的坐標軸。 如果給出一種以上的顏色,多種函數可以用不同的顏色顯示。

GenParamNames:控制演示的通用參數。可能的值:'axes_color':坐標系顏色。 默認值:“白色” 如果給出'none',則不顯示坐標系。'style':圖形樣式。 可能的值:'line'(默認)、'cross'、'filled''clip':將圖形剪輯到坐標系區域。 可能的值:“否”(默認)、“是”'ticks':控制軸上刻度的顯示。 如果給出“min_max_origin”(默認),則顯示刻度 在軸的最小值和最大值處以及 x 軸和 y 軸的截點。 如果給出“無”,則不顯示刻度。 如果給定任何數字!= 0,則將其解釋為距離 刻度之間。'ticks_x':僅控制 x 軸上刻度的顯示。'ticks_y':僅控制 x 軸上刻度的顯示。'grid':控制坐標系內網格線的顯示。 如果給出“min_max_origin”(默認),則顯示網格線 在軸的最小值和最大值處。 如果給出“無”,則不顯示網格線。 如果給定任何數字!= 0,則將其解釋為距離 網格線之間。 'grid_x':僅控制 x 軸的網格線顯示。'grid_y':僅控制 y 軸的網格線顯示。'grid_color':網格的顏色(默認值:'dim gray')。'margin':坐標系區域的像素距離 到所有四個窗口邊框。'margin_left':坐標系區域的像素距離 到左窗口邊框。'margin_right':坐標系區域的像素距離 到右側窗口邊框。'margin_top':坐標系區域的像素距離 到上窗口邊框。'margin_bottom'':坐標系區域的像素距離 到下窗口邊框。'start_x':x 軸的最低 x 值。 默認值:min(XValues)'end_x':x 軸的最高 x 值。 默認值:最大值(XValues)'start_y':x 軸的最低 y 值。 默認值:min(YValues)'end_y':x 軸的最高 y 值。 默認值:最大值(YValues)'origin_x':x 軸和 y 軸的截點的 X 坐標。 默認值:與 start_x 相同'origin_y':x 和 y 軸的截點的 Y 坐標。 默認值:與 start_y 相同GenParamValues:GenericParamNames 的通用參數的值。 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Halcon知识:如何求一个工件的粗细的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。