Halcon在21,11更新了最新的深度学习方法:实例分割,官方演示视频可以看这里:使用 HALCON 进行深度学习实例分割:MVTec 软件https://www.mvtec.com/company/news/article/deep-learning-instance-segmentation-with-halcon
这里我主要用了自己训练的网络模型进行了实例分割,可以给想使用自己的数据集实现halcon实例分割的朋友一个参考,下面直接贴代码
OutputDirPreprocessing := '../1'
TestImageFolder := 'G:/2D-3D/连杆_images/'
TestModelFolder :='G:/2D-3D/3DModel/'
DepthImageFolder :='G:/2D-3D/DepthImages/'
list_files (TestModelFolder, 'files', ModelFiles)
tuple_shuffle (ModelFiles, ModelFilesShuffled)
list_image_files (TestImageFolder, 'default', 'recursive', ImageFiles)
tuple_shuffle (ImageFiles, ImageFilesShuffled)
list_image_files (DepthImageFolder, 'default', 'recursive', DepthImageFiles)
tuple_shuffle (DepthImageFiles, DepthImageFilesShuffled)
read_dl_model ('G:/2D-3D/连杆模型.hdl', DLModelHandle)
read_dict ('G:/2D-3D/连杆.hdict', [], [], DLDataset)
find_dl_samples (DLDataset.samples, 'split', 'test', 'match', SampleIndices)
create_dl_preprocess_param_from_model (DLModelHandle, 'none', 'full_domain', [], [], [], DLPreprocessParam)
preprocess_dl_dataset (DLDataset, OutputDirPreprocessing, DLPreprocessParam, dict{overwrite_files: 'auto'}, DLDatasetFileName)
WindowDict := dict{}
get_dl_model_param (DLModelHandle, 'class_ids', ClassIds)
get_dl_model_param (DLModelHandle, 'class_names', ClassNames)
DLDatasetInfo := dict{class_ids: ClassIds, class_names: ClassNames}
for IndexInference := 0 to |ImageFiles|-1 by 1
read_image (Image, ImageFilesShuffled[IndexInference])
gen_dl_samples_from_images (Image, DLSampleInference)
preprocess_dl_samples (DLSampleInference, DLPreprocessParam)
apply_dl_model (DLModelHandle, DLSampleInference, [], DLResult)
dev_display_dl_data (DLSampleInference, DLResult, DLDatasetInfo, 'bbox_result', [], WindowDict)
zoom_image_size (Image, ImageZoom, 1920, 1200, 'constant')
read_image (DepthImage, DepthImageFilesShuffled[IndexInference])
dev_disp_text ('Press F5 to continue', 'window', 'bottom', 'right', 'black', [], [])
stop ()
endfor
dev_close_window_dict (WindowDict)