在HDevelop中
dev_update_off() read_image (Image, 'D:/bb/tu/1.jpg') get_image_size (Image, Width, Height) dev_open_window(10,10,Width, Height,'black',WindowHandle) mean_image(Image,ImageMean, 9, 9) dyn_threshold (Image, ImageMean, RegionDynThresh, 2, 'dark') *局部阈值分割 *参数1:输入图像 *参数2:滤波后图像(参考图),可以通过mean_image, binomial_filter, gauss_filter等滤波方式处理 * 滤波时注意掩码大小,它决定提取区域的大小 * 提取的就是参数1和参数2对比后的区域 *参数3:分割后区域 *参数4:灰度差值,默认值5;邻域比较的区间范围,灰度值变化在offset范围内均是可以接受的 * 参数Offset不要设置0,否则将会提取到很多小的噪点区域,一般介于5-40最佳,其值越大,提取的区域越小 * 【参数1和参数2对应像素点的差,提取差值大于参数4的区域】 *参数5:提取区域类型 * 'light' 提取相对参考图更亮的区域 * 'dark' 提取相对参考图更暗的区域 * 'equal' 选取和参考图差不多的区域 * 'not_equal' 不同区域 dev_display(RegionDynThresh)
在QtCreator中
HObject ho_Image, ho_ImageMean, ho_RegionDynThresh;
HTuple hv_Width, hv_Height, hv_WindowHandle;
ReadImage(&ho_Image, "D:/bb/tu/1.jpg"); GetImageSize(ho_Image, &hv_Width, &hv_Height); SetWindowAttr("background_color","black"); OpenWindow(10,10,hv_Width,hv_Height,0,"visible","",&hv_WindowHandle); HDevWindowStack::Push(hv_WindowHandle); MeanImage(ho_Image, &ho_ImageMean, 9, 9); DynThreshold(ho_Image, ho_ImageMean, &ho_RegionDynThresh, 2, "dark"); //局部阈值分割 //参数1:输入图像 //参数2:滤波后图像(参考图),可以通过mean_image, binomial_filter, gauss_filter等滤波方式处理 // 滤波时注意掩码大小,它决定提取区域的大小 // 提取的就是参数1和参数2对比后的区域 //参数3:分割后区域 //参数4:灰度差值,默认值5;邻域比较的区间范围,灰度值变化在offset范围内均是可以接受的 // 参数Offset不要设置0,否则将会提取到很多小的噪点区域,一般介于5-40最佳,其值越大,提取的区域越小 // 【参数1和参数2对应像素点的差,提取差值大于参数4的区域】 //参数5:提取区域类型 // 'light' 提取相对参考图更亮的区域 // 'dark' 提取相对参考图更暗的区域 // 'equal' 选取和参考图差不多的区域 // 'not_equal' 不同区域 if (HDevWindowStack::IsOpen()) DispObj(ho_RegionDynThresh, HDevWindowStack::GetActive());