標籤:support global 顯卡加速 通過 事先 alc efault gen 效果
//會閃屏的代碼,更新映像函數如下(以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無效
對於halcon與MFC或c#編程中,當寫入滾輪放縮映像時,映像會閃屏的解決方案