PEKAT(表面檢測)
效果預覽
提示
使用此示例,您需要先準備一個PEKAT VISION的License授權
開啟完整的PEKAT工程,並設定好相應的通訊引數,即可通過Vision-Studio進行呼叫。 
(一)準備Pekat
提前訓練一個PEKAT表面檢測的工程(詳細過程請參考本文最後一節,PekatVision使用介紹)
[0] 開啟PEKAT工程

[1] 通訊設定
[a] 勾選資料處理:Vision-Studio需要獲取PEKAT處理之後的資料
[b] 選擇提供者設定為API:Vision-Studio將通過呼叫API的方式與PEKAT通訊
[c] Host設定為執行Vision-Studio工程的PC機的網路地址,
如果PEKAT和Vision-Studio在同一台PC上,可以设置为127.0.0.1,如果在不同的PC上,需要确保网络通讯正常

(二)Vision-Studio工程

[0] 載入圖片:載入需要檢測的圖片至指定IM上

[1] Pekat表面檢測
輸入引數:
輸入影像:選擇需要進行操作的影像,影像序號與IM序號一致。

計算引數
主機:設定PekatVision所在的PC機的IP地址
埠號:設定Pekat對應工程的埠號
顯示標籤:輸出影像上顯示Pekat檢測的結果標籤
輸出視窗:推送視窗到暫存器,用於Vision-Studio工程上的後續處理,
举例:进一步测量该窗口中的几何尺寸
[2] 指令碼處理(可選)
指令碼繫結PekatVision輸出的Json作為變數。PekatVision表面检测算子输出变量包括PekatVision输出的Json字符串

通過指令碼獲取全域性變數並顯示檢測框以及檢測結果
確認需要檢測的模型modelId,獲取對應檢測資料x, y, height, width,根據獲取的結果將檢測框顯示到對應IM視窗
data = ConvertJsonToTable(json)
-- 获取检测框数量
number = #data.detectedRectangles
local x = {}
local y = {}
local width = {}
local height = {}
-- 根据模型id获取检测结果,这里的modelId要和pekat中的保持一致
for i = 1, number, 1 do
if(string.format("%d",data.detectedRectangles[i].source.modelId) == "1708506619") then
table.insert(x, data.detectedRectangles[i].x)
table.insert(y, data.detectedRectangles[i].y)
table.insert(width, data.detectedRectangles[i].width)
table.insert(height, data.detectedRectangles[i].height)
end
end
--输出检测框及结果
for i = 1, #x, 1 do
DrawWindow2D(0,"red",x[i],y[i],x[i]+width[i],y[i]+height[i])
DrawText2D(0, "red", x[i], y[i] - 25, 20, "脏污")
end指令碼修改輸出視窗的顏色後,如下圖: 
PekatVision使用介紹
標註訓練
[0] 建立並開啟工程
[1] 匯入圖片
選擇匯入圖片或資料夾來匯入資料集

[2] 選擇模組
選擇檢測對應模組
表面檢測:適用於檢測已知表面缺陷
檢測器:適用於已知缺陷的檢測與分類
異常檢測器:適用於表面背景有重複的缺陷檢測(只需要OK合格圖訓練)

[3] 缺陷標註及訓練
進入訓練介面,對缺陷進行標註並分類,點選開始訓練訓練模型。

結果檢視
檢查
在檢查介面檢視對應模型檢測結果

檢視
在檢視介面檢視每張圖檢測完畢後的檢測結果json字串

json字串包含內容
缺陷位置:x, y, height, width
缺陷檢測模型id:modelId
缺陷標籤:label
