111.png
112.png
在HDevelop中
read_image (Image1, 'D:/bb/tu/111.png') read_image (Image2, 'D:/bb/tu/112.png') get_image_size (Image1, Width, Height) convert_image_type (Image1, ImageConverted1, 'int2') *圖像類型轉換 *參數1:輸入圖像 *參數2:輸出圖像 *參數3:新類型( 'int1', 'int2', 'uint2', 'int4', 'byte', 'real', 'direction', 'cyclic', 'complex') *convert_image_type將任意類型的圖像轉換為任意的新圖像類型,如果從較大的灰度值范圍轉換到較小的灰度 *值范圍(例如,從'int4'到'byte'),過大或過小的值將被簡單地“剪切”。如果結果圖像的類型是'direction', *那么不屬於'direction'圖像有效值范圍的灰度值將被設置為255,以表示它們無效。因此,建議在調用該操作符 *之前通過調用scale_image來調整灰度值的范圍。對於類型復雜的圖像,只轉換實部,虛部被忽略。這有助於從 *頻域轉換回的圖像的有效轉換。這樣的圖像的虛部總是為0 convert_image_type (Image2, ImageConverted2, 'int2') sub_image (ImageConverted1, ImageConverted2, ImageSub, 1, 0) *將兩個圖像相減 dual_threshold (ImageSub, RegionDiff, 500, 20, 10) *把有符號的圖像分割為正負區域 *一般用在拉普拉斯算子之后,或者用來處理兩個圖像的差 *第一個輸入參數:圖像 *第二個輸出參數:分割后的正負區域 *第三個輸入參數:最小區域大小 *第四個輸入參數:最小灰度值大小 *第五個輸入參數:閾值 灰度值小於閾值(或大於-閾值)的區域將被抑制 dev_open_window(10,10,Width, Height,'black',WindowHandle) dev_display (RegionDiff)
在QtCreator中
HObject ho_Image1, ho_Image2, ho_ImageConverted1;
HObject ho_ImageConverted2, ho_ImageSub, ho_RegionDiff;
HTuple hv_Width, hv_Height, hv_WindowHandle;
ReadImage(&ho_Image1, "D:/bb/tu/111.png"); ReadImage(&ho_Image2, "D:/bb/tu/112.png"); GetImageSize(ho_Image1, &hv_Width, &hv_Height); ConvertImageType(ho_Image1, &ho_ImageConverted1, "int2"); //圖像類型轉換 //參數1:輸入圖像 //參數2:輸出圖像 //參數3:新類型( 'int1', 'int2', 'uint2', 'int4', 'byte', 'real', 'direction', 'cyclic', 'complex') //convert_image_type將任意類型的圖像轉換為任意的新圖像類型,如果從較大的灰度值范圍轉換到較小的灰度 //值范圍(例如,從'int4'到'byte'),過大或過小的值將被簡單地“剪切”。如果結果圖像的類型是'direction', //那么不屬於'direction'圖像有效值范圍的灰度值將被設置為255,以表示它們無效。因此,建議在調用該操作符 //之前通過調用scale_image來調整灰度值的范圍。對於類型復雜的圖像,只轉換實部,虛部被忽略。這有助於從 //頻域轉換回的圖像的有效轉換。這樣的圖像的虛部總是為0 ConvertImageType(ho_Image2, &ho_ImageConverted2, "int2"); SubImage(ho_ImageConverted1, ho_ImageConverted2, &ho_ImageSub, 1, 0); //將兩個圖像相減 DualThreshold(ho_ImageSub, &ho_RegionDiff, 500, 20, 10); //把有符號的圖像分割為正負區域 //一般用在拉普拉斯算子之后,或者用來處理兩個圖像的差 //第一個輸入參數:圖像 //第二個輸出參數:分割后的正負區域 //第三個輸入參數:最小區域大小 //第四個輸入參數:最小灰度值大小 //第五個輸入參數:閾值 灰度值小於閾值(或大於-閾值)的區域將被抑制 SetWindowAttr("background_color","black"); OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle); HDevWindowStack::Push(hv_WindowHandle); if (HDevWindowStack::IsOpen()) DispObj(ho_RegionDiff, HDevWindowStack::GetActive());