Halcon 初始化函數SetSystem("" ,"" )的應用和理解


//會閃屏的代碼,更新圖像函數如下(以MFC為例)*******************************************************

void CGeomLocationApp::UpdateImageEx(Hobject Image, //圖像
Hobject &objDispR, //顯示圖形紅色
Hobject &objDispG, //顯示圖形綠色
Hobject &objDispB, //顯示圖形藍色
Hobject &objDispY, //顯示圖形黃色
Hlong hWindowHandle, //窗口句柄
BOOL bInitial //是否對圖形進行初始化操作
)
{
//復位顯示圖形
if (bInitial==TRUE)
{
objDispR.Reset();
objDispG.Reset();
objDispB.Reset();
objDispY.Reset();
}
//清楚顯示窗口
clear_window(hWindowHandle);
//顯示圖像
disp_obj(Image,hWindowHandle);
//顯示圖形
if (objDispR.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"red");
disp_obj(objDispR,hWindowHandle);
}
if (objDispG.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"green");
disp_obj(objDispG,hWindowHandle);
}
if (objDispB.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"blue");
disp_obj(objDispB,hWindowHandle);
}
if (objDispY.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"yellow");
disp_obj(objDispY,hWindowHandle);
}
set_color(hWindowHandle,"red");
}

//會閃屏的代碼,更新圖像函數如下*******************************************************

如需不閃屏,只需在clear_window前后,加入兩個函數,通過設置系統的flush_graphic,來實現,其代碼如下

void CGeomLocationApp::UpdateImageEx(Hobject Image, //圖像
Hobject &objDispR, //顯示圖形紅色
Hobject &objDispG, //顯示圖形綠色
Hobject &objDispB, //顯示圖形藍色
Hobject &objDispY, //顯示圖形黃色
Hlong hWindowHandle, //窗口句柄
BOOL bInitial //是否對圖形進行初始化操作
)
{
//復位顯示圖形
if (bInitial==TRUE)
{
objDispR.Reset();
objDispG.Reset();
objDispB.Reset();
objDispY.Reset();
}
set_system("flush_graphic","false");
//清楚顯示窗口
clear_window(hWindowHandle);
set_system("flush_graphic","true");
//顯示圖像
disp_obj(Image,hWindowHandle);
//顯示圖形
if (objDispR.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"red");
disp_obj(objDispR,hWindowHandle);
}
if (objDispG.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"green");
disp_obj(objDispG,hWindowHandle);
}
if (objDispB.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"blue");
disp_obj(objDispB,hWindowHandle);
}
if (objDispY.Id()!=H_EMPTY_REGION)
{
set_color(hWindowHandle,"yellow");
disp_obj(objDispY,hWindowHandle);
}
set_color(hWindowHandle,"red");
}

//其原因是"flush_graphic":圖形更新參數,true顯示實時更新,false不更新可提高運行速度

其默認為true,實時更新,太是當圖像太大時,一來讀取是需要,顯示時間的,二來清除圖像有黑屏這段時間,這使得我們會有閃屏的感覺,這時,我們關閉實時顯示,清除后再打更新圖像流,便使得圖像刷新時不會閃。

同時,也引入下halcon函數中set_system的一些常用參數的意義,其轉載自http://blog.csdn.net/xy943294069/article/details/41867973,"sunny被注冊"的文章,感謝其分享

set_system( : : SystemParameter, Value : )設定系統參數

border_shape_models:設置模板是否必須在ROI內

"flush_graphic":圖形更新參數,true顯示實時更新,false不更新可提高運行速度

"int2_bits":圖像縮放相關參數,-1為自動

"backing_store":定義是否刷新所有窗口

"icon_name":定義圖形窗口的名稱編號
"default_font" *):默認字體
"update_lut":是否使用系統默認顏色表
"use_window_thread":Windows下設置為true啟用所有halcon的圖形文本消息線程,提高運行速度
"graphic_stack_size":設定圖形堆棧大小
"x_package":數據傳輸包大小,如果包過大導致錯誤,可嘗試改小
"neighborhood", "tsp_neighborhood":設定相鄰像素為4或8,對使用相鄰像素算子產生影響
"init_new_image", "tsp_init_new_image":設定新圖像過濾前是否需要填充0,如整幅圖像過濾或圖像不過濾的區域是沒有影響的,可能用於掩蓋
"no_object_result", "tsp_no_object_result":如果圖像為空是否導致異常,true發出異常
"empty_region_result", "tsp_empty_region_result":空的Region是否導致異常
"store_empty_region", "tsp_store_empty_region":定義空的(沒有任何目標)是否作為結果輸出
"clip_region", "tsp_clip_region":定義是否修剪Region以適應圖像顯示
"int_zooming":定義圖像適應大小是整數還是浮點
"pregenerate_shape_models":定義是事先生成模板還是使用時創建
"border_shape_models":與圖像邊緣接觸模板定位目標是否有效
"opengl_context_cache_enable":使用顯卡加速如果顯卡支持,3D
"opengl_hidden_surface_removal_enable":顯卡加速,3D效果
"opengl_compatibility_mode_enable":顯卡加速使能
"image_dpi":設定保存圖片時的DPI分辨率
"width", "tsp_width":系統內部圖像寬度
"height", "tsp_height":系統內部圖像高度
"current_runlength_number", "tsp_current_runlength_number":Region的最大數量
"reentrant" *):設定線程並行化是否需要同步,不同步存在線程安全危險
"thread_num" *), "tsp_thread_num":設定並行化線程數量,default為使用物理內核最大數量
"thread_pool" *):是否僅使用已有的線程,false可創建新的線程
"flush_file":文件更新,false當進入換行時才更新文件
"ocr_trainf_version":定義學習的OCR文件版本
"filename_encoding":文件名稱編碼格式
"halcon_dir" *):輸入halcon安裝根目錄
"example_dir" *):輸入范例目錄
"image_dir" *):輸入圖像目錄
"3d_model_dir" *):輸入3D模型目錄
"lut_dir" *):色彩板目錄
"help_dir" *):幫助目錄
"do_low_error":低等級錯誤的丟出
"cancel_draw_result", "tsp_cancel_draw_result":被終止算子反應方式,默認繪制終止符不返回錯誤
"clock_mode":計時方式
"timer_mode"計時方式
"max_connection":可輸出的最大Region數量,0輸出所有
"extern_alloc_funct":函數指針的使用,0使用
"image_cache_capacity" *):設定圖片空間大小上限
"global_mem_cache":緩存的使用方式
"temporary_mem_cache" *):臨時緩存的使用,true重載共享,false專有
"alloctmp_max_blocksize":定義最大的存儲塊大小,temporary_mem_cache為true有效
"database" *):數據調試時使用數據表格
"mmx_enable":顯卡加速使能,mmx_supported為false無效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM