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

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

示例程序源碼(加注釋)

  • 關于顯示類函數解釋
    dev_update_off ()
    read_image (Image, ‘metal-parts/metal-parts-01’)
    init_visualization (Image, 3, ‘white’, ‘margin’, Width, Height, WindowID)
init_visualization函數內部代碼:
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'light gray', WindowID)
dev_set_part (0, 0, Height - 1, Width - 1)
dev_set_line_width (LineWidth)
dev_set_color (Color)
dev_set_draw (DrawMode)
dev_display (Image)
return ()

set_display_font (WindowID, 16, ‘mono’, ‘true’, ‘false’)
disp_continue_message (WindowID, ‘black’, ‘true’)
stop ()
dev_set_draw (‘fill’)
count_seconds (T1)

  • 二值化
    threshold (Image, Region, 100, 255)
  • 求中心與面積
    area_center (Region, AreaRegion, RowCenterRegion, ColumnCenterRegion)
  • 通過擬合橢圓求解區域角度
    orientation_region (Region, OrientationRegion)
    count_seconds (T2)
    dev_display (Region)
set_tposition (WindowID, 10, 10)
write_string (WindowID, 'Region Processing')
set_tposition (WindowID, 10, 300)
write_string (WindowID, 'Time: ' + ((T2 - T1) * 1000)$'.2' + ' ms')
set_tposition (WindowID, 50, 10)
write_string (WindowID, 'Center Row: ' + RowCenterRegion$'.5')
set_tposition (WindowID, 50, 300)
write_string (WindowID, 'Center Column: ' + ColumnCenterRegion$'.5')
set_tposition (WindowID, 80, 10)
write_string (WindowID, 'Area: ' + AreaRegion + ' pixels')
set_tposition (WindowID, 80, 300)
write_string (WindowID, 'Orientation: ' + OrientationRegion$'.3' + ' rad')
dev_set_color ('gray')
disp_cross (WindowID, RowCenterRegion, ColumnCenterRegion, 10, 0)
* 求最小外接矩形
smallest_rectangle2 (Region, Row_Region, Column_Region, Phi_Region, Length1_Region, Length2_Region)
* 繪制最小外接矩形
gen_rectangle2 (Rectangle, Row_Region, Column_Region, Phi_Region, Length1_Region, Length2_Region)
disp_continue_message (WindowID, 'black', 'true')
stop ()

count_seconds (T3)

  • 二值化、求邊界、膨脹、減少定義域、求邊界
    threshold (Image, Region, 100, 255)
    boundary (Region, RegionBorder, ‘inner’)
    dilation_circle (RegionBorder, RegionDilation, 1.5)
    reduce_domain (Image, RegionDilation, ImageReduced)
    edges_sub_pix (ImageReduced, Edges, ‘lanser2’, 0.5, 40, 90)
  • 求取xld輪廓面積與位置
    area_center_xld (Edges, AreaContours, RowCenterContours, ColumnCenterContours, PointOrderContours)
    AreaOfRegionByContours := AreaContours[0] - AreaContours[1] - AreaContours[2] - AreaContours[3]
  • 求取輪廓方向
    orientation_xld (Edges, OrientationContours)
    count_seconds (T4)
    dev_set_color (‘light gray’)
    dev_display (Edges)
set_tposition (WindowID, 330, 10)
write_string (WindowID, 'Contour Processing')
set_tposition (WindowID, 330, 300)
write_string (WindowID, 'Time: ' + ((T4 - T3) * 1000)$'.3' + ' ms')
set_tposition (WindowID, 370, 10)
write_string (WindowID, 'Center Row: ' + RowCenterContours[0]$'.4')
set_tposition (WindowID, 370, 300)
write_string (WindowID, 'Center Column: ' + ColumnCenterContours[0]$'.4')
set_tposition (WindowID, 400, 10)
write_string (WindowID, 'Area: ' + AreaOfRegionByContours[0] + ' pixels')
set_tposition (WindowID, 400, 300)
write_string (WindowID, 'Orientation: ' + OrientationContours[0]$'.3' + ' rad')
disp_cross (WindowID, RowCenterContours, ColumnCenterContours, 6, 0)
disp_cross (WindowID, RowCenterContours[0], ColumnCenterContours[0], 10, 0)
smallest_rectangle2_xld (Edges, Row_Contours, Column_Contours, Phi_Contours, Length1_Contours, Length2_Contours)
disp_continue_message (WindowID, 'black', 'true')
stop ()
  • 使用圓形與直線分割XLD輪廓
    segment_contours_xld (Edges, ContoursSplit, ‘lines_circles’, 6, 4, 4)
  • 對XLD輪廓進行排序
    sort_contours_xld (ContoursSplit, SortedContours, ‘upper_left’, ‘true’, ‘column’)
    dev_clear_window ()
    dev_set_colored (12)
    dev_display (SortedContours)
    stop ()
    open_zoom_window (0, round(Width / 2), 115, 225, 395, 535, 2, WindowHandleZoom)
    set_display_font (WindowHandleZoom, 14, ‘mono’, ‘true’, ‘false’)
    count_obj (SortedContours, NumSegments)
    dev_display (Image)
    NumCircles := 0
    NumLines := 0
    gen_empty_obj (Lines)
    RowsBegin := []
    ColsBegin := []
    RowsEnd := []
    ColsEnd := []
    dev_set_color (‘white’)
    set_tposition (WindowHandleZoom, 120, 230)
    write_string (WindowHandleZoom, 'Line lengths and circle radii: ')
for i := 1 to NumSegments by 1select_obj (SortedContours, SingleSegment, i)* 獲得XLD輪廓的屬性值get_contour_global_attrib_xld (SingleSegment, 'cont_approx', Attrib)if (Attrib == 1)NumCircles := NumCircles + 1* 擬合圓形fit_circle_contour_xld (SingleSegment, 'atukey', -1, 2, 0, 5, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)* 創建橢圓XLD輪廓gen_ellipse_contour_xld (ContEllipse, Row, Column, 0, Radius, Radius, 0, rad(360), 'positive', 1.0)dev_set_color ('white')dev_display (ContEllipse)* 計算輪廓到橢圓的距離。dist_ellipse_contour_xld (SingleSegment, 'algebraic', -1, 0, Row, Column, 0, Radius, Radius, MinDist, MaxDist, AvgDist, SigmaDist)set_tposition (WindowHandleZoom, Row - Radius - 10, Column)write_string (WindowHandleZoom, 'C' + NumCircles)ResultText := 'C' + NumCircles + ': Radius = ' + Radius$'.3' + ' / MaxDeviation: ' + MaxDist$'.3'elseNumLines := NumLines + 1* 擬合直線fit_line_contour_xld (SingleSegment, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)* 由點生成多邊形XLD輪廓gen_contour_polygon_xld (Line, [RowBegin,RowEnd], [ColBegin,ColEnd])dev_set_color ('yellow')dev_display (Line)* 計算點到點的距離distance_pp (RowBegin, ColBegin, RowEnd, ColEnd, Length)set_tposition (WindowHandleZoom, (RowBegin + RowEnd) / 2 - Nr * 10, (ColBegin + ColEnd) / 2)write_string (WindowHandleZoom, 'L' + NumLines)ResultText := 'L' + NumLines + ': Length = ' + Length$'.4'concat_obj (Lines, Line, Lines)RowsBegin := [RowsBegin,RowBegin]ColsBegin := [ColsBegin,ColBegin]RowsEnd := [RowsEnd,RowEnd]ColsEnd := [ColsEnd,ColEnd]endifset_tposition (WindowHandleZoom, 275 + i * 10, 230)write_string (WindowHandleZoom, ResultText)
endfor
disp_continue_message (WindowHandleZoom, 'black', 'true')
stop ()

dev_display (Image)
dev_set_color (‘white’)

  • 使用foerstner檢測特征點
    points_foerstner (Image, 1, 2, 3, 200, 0.3, ‘gauss’, ‘false’, RowJunctions, ColJunctions, CoRRJunctions, CoRCJunctions, CoCCJunctions, RowArea, ColArea, CoRRArea, CoRCArea, CoCCArea)
  • 繪制十字線
    gen_cross_contour_xld (CrossFoerstner, RowJunctions, ColJunctions, 10, 0)
    dev_display (CrossFoerstner)
    set_tposition (WindowHandleZoom, RowJunctions[0] - 10, ColJunctions[0] + 10)
    write_string (WindowHandleZoom, ‘P2’)
    set_tposition (WindowHandleZoom, RowJunctions[1] - 10, ColJunctions[1] + 10)
    write_string (WindowHandleZoom, ‘P1’)
    set_tposition (WindowHandleZoom, 120, 230)
    write_string (WindowHandleZoom, ‘Foerstner Points’)
    disp_continue_message (WindowHandleZoom, ‘black’, ‘true’)
    stop ()
    dev_set_color (‘yellow’)
    write_string (WindowHandleZoom, ’ vs. intersection_l_l: ')
  • 求線段交點
    intersection_lines (RowsBegin[0], ColsBegin[0], RowsEnd[0], ColsEnd[0], RowsBegin[1], ColsBegin[1], RowsEnd[1], ColsEnd[1], RowIntersect1, ColumnIntersect1, IsOverlapping1)
  • 繪制十字線
    gen_cross_contour_xld (CrossIntersection1, RowIntersect1, ColumnIntersect1, 10, 0.785398)
    dev_display (CrossIntersection1)
    dev_set_color (‘white’)
    distance_pp (RowJunctions[1], ColJunctions[1], RowIntersect1, ColumnIntersect1, Distance1)
    set_tposition (WindowHandleZoom, 325, 230)
    write_string (WindowHandleZoom, ‘Distance between Foerstner points and’)
    set_tposition (WindowHandleZoom, 335, 230)
    write_string (WindowHandleZoom, ‘points obtained by intersection_ll:’)
    set_tposition (WindowHandleZoom, 355, 230)
    write_string (WindowHandleZoom, ‘in P1: ’ + Distance1′.3′+′pixels′)devsetcolor(′yellow′)intersectionlines(RowsBegin[0],ColsBegin[0],RowsEnd[0],ColsEnd[0],RowsBegin[2],ColsBegin[2],RowsEnd[2],ColsEnd[2],RowIntersect2,ColumnIntersect2,IsOverlapping2)distancepp(RowJunctions[0],ColJunctions[0],RowIntersect2,ColumnIntersect2,Distance2)gencrosscontourxld(CrossIntersection2,RowIntersect2,ColumnIntersect2,10,0.785398)devdisplay(CrossIntersection2)devsetcolor(′white′)settposition(WindowHandleZoom,370,230)writestring(WindowHandleZoom,′inP2:′+Distance2'.3' + ' pixels') dev_set_color ('yellow') intersection_lines (RowsBegin[0], ColsBegin[0], RowsEnd[0], ColsEnd[0], RowsBegin[2], ColsBegin[2], RowsEnd[2], ColsEnd[2], RowIntersect2, ColumnIntersect2, IsOverlapping2) distance_pp (RowJunctions[0], ColJunctions[0], RowIntersect2, ColumnIntersect2, Distance2) gen_cross_contour_xld (CrossIntersection2, RowIntersect2, ColumnIntersect2, 10, 0.785398) dev_display (CrossIntersection2) dev_set_color ('white') set_tposition (WindowHandleZoom, 370, 230) write_string (WindowHandleZoom, 'in P2: ' + Distance2.3+pixels)devs?etc?olor(yellow)intersectionl?ines(RowsBegin[0],ColsBegin[0],RowsEnd[0],ColsEnd[0],RowsBegin[2],ColsBegin[2],RowsEnd[2],ColsEnd[2],RowIntersect2,ColumnIntersect2,IsOverlapping2)distancep?p(RowJunctions[0],ColJunctions[0],RowIntersect2,ColumnIntersect2,Distance2)genc?rossc?ontourx?ld(CrossIntersection2,RowIntersect2,ColumnIntersect2,10,0.785398)devd?isplay(CrossIntersection2)devs?etc?olor(white)sett?position(WindowHandleZoom,370,230)writes?tring(WindowHandleZoom,inP2:+Distance2’.3’ + ’ pixels’)
    disp_continue_message (WindowHandleZoom, ‘black’, ‘true’)
    stop ()
    dev_display (Image)
  • 計算兩條線之間的角度。
    angle_ll (RowsBegin[0], ColsBegin[0], RowsEnd[0], ColsEnd[0], RowsBegin[1], ColsBegin[1], RowsEnd[1], ColsEnd[1], Angle1)
    set_tposition (WindowHandleZoom, RowsBegin[0] - 10, ColsBegin[0] + 10)
    write_string (WindowHandleZoom, ‘P2’)
    set_tposition (WindowHandleZoom, RowsEnd[0] - 10, ColsEnd[0] + 10)
    write_string (WindowHandleZoom, ‘P1’)
    set_tposition (WindowHandleZoom, 120, 230)
    write_string (WindowHandleZoom, ‘Angle in P1: ’ + deg(Angle1)′.3′+′degrees′)disparrow(WindowHandleZoom,RowsEnd[0],ColsEnd[0],RowsBegin[0],ColsBegin[0],1)disparrow(WindowHandleZoom,RowsBegin[1],ColsBegin[1],RowsEnd[1],ColsEnd[1],1)dispcontinuemessage(WindowHandleZoom,′black′,′true′)stop()devdisplay(Image)anglell(RowsBegin[0],ColsBegin[0],RowsEnd[0],ColsEnd[0],RowsBegin[2],ColsBegin[2],RowsEnd[2],ColsEnd[2],Angle2)settposition(WindowHandleZoom,RowsBegin[0]?10,ColsBegin[0]+10)writestring(WindowHandleZoom,′P2′)settposition(WindowHandleZoom,RowsEnd[0]?10,ColsEnd[0]+10)writestring(WindowHandleZoom,′P1′)settposition(WindowHandleZoom,120,230)writestring(WindowHandleZoom,′AngleinP2:′+deg(Angle2)'.3' + ' degrees') disp_arrow (WindowHandleZoom, RowsEnd[0], ColsEnd[0], RowsBegin[0], ColsBegin[0], 1) disp_arrow (WindowHandleZoom, RowsBegin[1], ColsBegin[1], RowsEnd[1], ColsEnd[1], 1) disp_continue_message (WindowHandleZoom, 'black', 'true') stop () dev_display (Image) angle_ll (RowsBegin[0], ColsBegin[0], RowsEnd[0], ColsEnd[0], RowsBegin[2], ColsBegin[2], RowsEnd[2], ColsEnd[2], Angle2) set_tposition (WindowHandleZoom, RowsBegin[0] - 10, ColsBegin[0] + 10) write_string (WindowHandleZoom, 'P2') set_tposition (WindowHandleZoom, RowsEnd[0] - 10, ColsEnd[0] + 10) write_string (WindowHandleZoom, 'P1') set_tposition (WindowHandleZoom, 120, 230) write_string (WindowHandleZoom, 'Angle in P2: ' + deg(Angle2).3+degrees)dispa?rrow(WindowHandleZoom,RowsEnd[0],ColsEnd[0],RowsBegin[0],ColsBegin[0],1)dispa?rrow(WindowHandleZoom,RowsBegin[1],ColsBegin[1],RowsEnd[1],ColsEnd[1],1)dispc?ontinuem?essage(WindowHandleZoom,black,true)stop()devd?isplay(Image)anglel?l(RowsBegin[0],ColsBegin[0],RowsEnd[0],ColsEnd[0],RowsBegin[2],ColsBegin[2],RowsEnd[2],ColsEnd[2],Angle2)sett?position(WindowHandleZoom,RowsBegin[0]?10,ColsBegin[0]+10)writes?tring(WindowHandleZoom,P2)sett?position(WindowHandleZoom,RowsEnd[0]?10,ColsEnd[0]+10)writes?tring(WindowHandleZoom,P1)sett?position(WindowHandleZoom,120,230)writes?tring(WindowHandleZoom,AngleinP2:+deg(Angle2)’.3’ + ’ degrees’)
    disp_arrow (WindowHandleZoom, RowsBegin[0], ColsBegin[0], RowsEnd[0], ColsEnd[0], 1)
    disp_arrow (WindowHandleZoom, RowsEnd[2], ColsEnd[2], RowsBegin[2], ColsBegin[2], 1)
    disp_continue_message (WindowHandleZoom, ‘black’, ‘true’)
    stop ()
  • 生成多邊形的XLD輪廓。
    gen_polygons_xld (ContoursSplit, Polygons, ‘ramer’, 2)
  • 提取平行多邊形XLD輪廓
    gen_parallels_xld (Polygons, Parallels, 80, 75, 0.15, ‘true’)
    count_obj (Parallels, NumberParallels)
    dev_display (Image)
for i := 1 to NumberParallels by 1dev_set_color ('white')select_obj (Parallels, SelectedParallel, i)dev_display (SelectedParallel)* 得到XLD邊緣平行數據get_parallels_xld (SelectedParallel, Row1Parallels, Col1Parallels, Length1Parallels, Phi1Parallels, Row2Parallels, Col2Parallels, Length2Parallels, Phi2Parallels)distance_pp (Row1Parallels[0], Col1Parallels[0], Row2Parallels[1], Col2Parallels[1], Distance2)distance_pp (Row1Parallels[1], Col1Parallels[1], Row2Parallels[0], Col2Parallels[0], Distance1)set_tposition (WindowHandleZoom, 120, 230)write_string (WindowHandleZoom, 'Distance BC: ' + Distance1$'.4' + ' pixels')set_tposition (WindowHandleZoom, 140, 230)write_string (WindowHandleZoom, 'Distance AD: ' + Distance2$'.4' + ' pixels')set_tposition (WindowHandleZoom, 340, 230)write_string (WindowHandleZoom, 'Orientation AB: ' + deg(Phi1Parallels)$'.3' + ' degrees')set_tposition (WindowHandleZoom, 360, 230)write_string (WindowHandleZoom, 'Orientation DC: ' + deg(Phi2Parallels)$'.3' + ' degrees')set_tposition (WindowHandleZoom, Row1Parallels[0] + 10, Col1Parallels[0])write_string (WindowHandleZoom, 'A')set_tposition (WindowHandleZoom, Row1Parallels[1] + 10, Col1Parallels[1])write_string (WindowHandleZoom, 'B')set_tposition (WindowHandleZoom, Row2Parallels[0] + 10, Col2Parallels[0])write_string (WindowHandleZoom, 'C')set_tposition (WindowHandleZoom, Row2Parallels[1] + 10, Col2Parallels[1])write_string (WindowHandleZoom, 'D')* dev_set_color ('yellow')disp_line (WindowHandleZoom, Row1Parallels[0], Col1Parallels[0], Row2Parallels[1], Col2Parallels[1])disp_line (WindowHandleZoom, Row1Parallels[1], Col1Parallels[1], Row2Parallels[0], Col2Parallels[0])disp_continue_message (WindowHandleZoom, 'black', 'true')stop ()
endfor

dev_set_color (‘white’)
dev_set_draw (‘margin’)
dev_display (Image)
dev_display (Rectangle)
set_tposition (WindowHandleZoom, 120, 230)
write_string (WindowHandleZoom, ‘Lenght / Width of smallest enclosing rectangle:’)
set_tposition (WindowHandleZoom, 140, 230)
write_string (WindowHandleZoom, (2 * Length1_Region)′.4′+′/′+(2?Length2Region)'.4' + ' / ' + (2 * Length2_Region).4+/+(2?Length2R?egion)’.4’ + ’ pixels’)
disp_continue_message (WindowHandleZoom, ‘black’, ‘true’)
stop ()
dev_set_window (WindowHandleZoom)
dev_close_window ()

處理思路

這個例子是主要講解了xld輪廓擬合進行尺寸測量的例子。其中展示了幾種方法:使用區域與xld邊緣進行區域的中心提取;使用不同的方式求取兩條直線的交點。

后記

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

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

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

相關文章

雙目匹配與視差計算

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

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

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

react 開發知識準備

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

Linux多線程編程(不限Linux)

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

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

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

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

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

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

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

opencv雙目測距實現

雖然最近注意力已經不可遏制地被神經科學、大腦記憶機制和各種畢業活動吸引過去了,但是還是覺得有必要把這段時間雙目視覺方面的進展總結一下。畢竟從上一篇博文發表之后,很多同仁發E-mail來與我討論,很多原來的疑團,也在討論和一…

logback高級特性使用-異步記錄日志

注意:該功能需要高版本才能支持,如1.0.11。AsyncAppender,異步記錄日志。 工作原理: 當Logging Event進入AsyncAppender后,AsyncAppender會調用appender方法,append方法中在將event填入Buffer(這里選用的數…

Linux下c開發 之 線程通信(轉)

1.Linux“線程”進程與線程之間是有區別的,不過Linux內核只提供了輕量進程的支持,未實現線程模型。Linux是一種“多進程單線程”的操作系統。Linux本身只有進程的概念,而其所謂的“線程”本質上在內核里仍然是進程。大家知道,進程…

HDU 1028 Ignatius and the Princess III

//強行遞推。 xx[i][j]表示i數中第j個開頭的組合種類。 /* 最終結果[i]為 sum of(xx[i][j]) (j from 1 to i); xx[i][j]sum of (xx[i-j][k]) (k from 1 to j); 例如 xx[10][4]xx[6][1]xx[6][2]xx[6][3]xx[6][4]; xx[6][1] 1; 6111111; xx[6][2]3; 6222, 62211, 621111; xx[…

HALCON示例程序measure_metal_part_id.hdev使用xld邊緣擬合檢測零件加工是否合格

HALCON示例程序measure_metal_part_id.hdev使用xld邊緣擬合檢測零件加工是否合格 示例程序源碼(加注釋) 關于顯示類函數解釋 dev_update_off () Imagefiles : [‘metal-parts/metal-part-model-01’,‘metal-parts/metal-parts-01’,‘metal-parts/meta…

編寫批處理文件-------基礎

第一、Windows bat 批處理文件 編寫 如何編寫批處理文件 批處理文件(batch file)包含一系列 DOS命令,通常用于自動執行重復性任務。 用戶只需雙擊批處理文件便可執行任務,而無需重復輸入相同指令。編寫批處理文件非常簡單&#xf…

主控芯片

主控芯片: 主控芯片里有310,320,3288,288,318,333,345,7501, 其中310是中星微發展比較早,比較成熟的芯片。在現在一般應用在水晶夾子之類的低端產品上。 3288也是低端芯片,318&…

MPEG2、H.263、H.264協議效率對比

[摘錄]1.1 MPEG2、H.263、H.264協議效率對比ITUT中定義的雙向視頻通信協議族包括:H.320、H.323,這兩個協議族中,包含了很多子協議,例如音頻編碼協議、視頻編碼協議等,其中視頻編碼包括:H.261、H.263、H.264…

WebService SOAP、Restful和HTTP(post/get)請求區別

web service(SOAP) Webservice的一個最基本的目的就是提供在各個不同平臺的不同應用系統的協同工作能力。 Web service 就是一個應用程序,它向外界暴露出一個能夠通過Web進行調用的API。 SOAP是一種簡單基于xml的輕量協議,用戶web…

Block的循環引用詳解

1.首先我們創建了一個網絡請求工具類 然后storyboard里面去創建了一個導航控制器 并且把它設置為初始控制器 然后拖入一個bar button --show--到自帶的控制器 這個時候運行代碼的結果是 x 顯然這個時候沒有造成循環引用 為什…

HALCON示例程序measure_pump.hdev螺紋孔位置與尺寸測量

HALCON示例程序measure_pump.hdev螺紋孔位置與尺寸測量 示例程序源碼(加注釋) 關于顯示類函數解釋 dev_update_var (‘off’) dev_update_off () read_image (Image, ‘pumpe’) get_image_size (Image, Width, Height) dev_close_window () dev_open_…

計算機視覺和圖形學中的攝像機內參數矩陣詳解

在計算機視覺和圖形學中都有“攝像機內參數矩陣”這個概念,其含義大致相同,但在實際使用過程中,這兩個矩陣卻相差甚遠。在增強現實中,為了使計算機繪制的虛擬物體和真實環境圖像對其,需要令虛擬攝像機的內參數和真實攝…

c#和html方法互調

具體見連接:https://www.cnblogs.com/zeroLove/p/3912460.html轉載于:https://www.cnblogs.com/gaara-zhang/p/8746403.html