halcon-convert_image_type图像类型转换

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());
复制代码

 

 

 

 

posted @   天子骄龙  阅读(1479)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2019-04-13 窗口标志-外观
2019-04-13 pyqt5-QWidget-窗口状态(最大化最小化等)
2019-04-13 pyqt5-顶层窗口特定操作-图标和标题和不透明度
2019-04-13 python-闭包
点击右上角即可分享
微信分享提示

目录导航