halcon学习 图像定义域、裁减、变形

定义域(ROI)

修改图像的定义域(ROI),不会改变图像的尺寸。

  • 获得图像的当前定义域
    get_domain (Image, Domain)

  • 用矩形去改变图像的定义域。

dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
* 矩形定义域
rectangle1_domain (Image, ImageReduced, Row1, Column1, Row2, Column2)
dev_clear_window ()
dev_display (ImageReduced)
  • 用任意形状的区域去改变图像的定义域
dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
draw_region (Region, WindowHandle)
* 任意形状定义域
reduce_domain (Image, Region,ImageReduced)
dev_clear_window ()
dev_display (ImageReduced)
  • 扩展图像的定义域到最大(去除ROI)
    full_domain (ImageReduced, ImageFull)

  • 图像的定义域更换
    change_domain (Image,Domain, ImageNew)

  • 批量改变图像定义域

  1. 与reduce_domain的区别是reduce_domain只对第一个区域有效,结果只有一副图像
  2. add_channels 生成的 图像数量与Regions的数量一致
concat_obj (Domain1, Domain2, Regions)
add_channels (Regions, Image, GrayRegions)

图像的裁剪

  • 按矩形区域裁剪
    crop_rectangle1 (Image, ImagePart, 100, 100, 200, 200)
  • 按图像的定义域裁减图像,图像的定义域未变,图像尺寸变小为定义域的最小外接矩形
    crop_domain (ImageReduced, ImagePart)
  • 按图像定义域裁剪图像,裁剪时对四边的裁剪位置进行偏移
    crop_domain_rel (Image, ImagePart, 100, 100, 100, 100)

图像变形

  • 缩放
  1. 缩放到固定大小zoom_image_size (Image, ImageZoom, 512, 512, 'constant')
  2. 按比例缩放zoom_image_factor (Image, ImageZoom, 0.5, 0.5, 'constant')
  • 旋转
    rotate_image (Image, ImageRotate, 90, 'constant')

  • 镜像
    mirror_image (Image, ImageMirror, 'row')

  • 仿射变换实现平移旋转缩放

dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
* 创建变换矩阵
hom_mat2d_identity(HomMat2DIdentity)
* 平移
hom_mat2d_translate (HomMat2DIdentity, 20, 20, HomMat2D)
* 旋转
* hom_mat2d_rotate (HomMat2D, rad(5), 100, 200, HomMat2D)
* 缩放
* hom_mat2d_scale (HomMat2D, 0.5, 0.5, 100, 200, HomMat2D)
* 镜像
* hom_mat2d_reflect (HomMat2D, 0, 300, 500, 300, HomMat2D)
* 斜切
* hom_mat2d_slant (HomMat2D, -0.78, 'x', 100, 100, HomMat2D)
* 应用
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
  • 刚体仿射变换 实现 平移旋转
dev_get_window (WindowHandle)
read_image (Image, 'mvtec_logo')
threshold (Image, Regions, 0, 255)
area_center (Regions, Area, Row, Column)
orientation_region (Regions, Phi)
*创建变换矩阵
vector_angle_to_rigid (Row, Column, 0, Row-50, Column, rad(15), HomMat2D)
*应用
affine_trans_image (Image, ImageAffineTrans, HomMat2D, 'constant', 'false')
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那么对于这个问题,我们需要使用 C# 与 Halcon 进行深度学习图像分类。在这里,我将提供一个简单的示例代码,以便您开始学习。但是,由于深度学习图像分类的复杂性,这个示例只是一个入门级别的例子,你需要根据实际需求进行修改。 首先,我们需要准备好 Halcon 的相关环境和引用库,你可以在官网上下载 Halcon 的安装包,并按照官方文档进行安装和配置。安装完成后,我们就可以编写代码了。 下面是一个使用 Halcon 进行图像分类的示例代码: ```csharp using HalconDotNet; class Program { static void Main(string[] args) { // 读入图像 HImage image = new HImage("test.jpg"); // 创建深度学习模型 HDeepLearningModel model = new HDeepLearningModel("model.hdl"); // 进行图像分类 HImage result = model.ApplyDeepLearningClassificaton(image); // 输出分类结果 HTuple values; result.GetGrayval(0, 0, out values); Console.WriteLine("分类结果为:" + values[0].I); } } ``` 在这段代码中,我们首先使用 HImage 类读入图像,然后使用 HDeepLearningModel 类创建深度学习模型,并将图像传入模型中进行分类。最后,我们使用 GetGrayval 方法获取分类结果,并输出到控制台上。 需要注意的是,这个示例代码中,我们使用的是已经训练好的深度学习模型,你需要根据自己的需求训练自己的模型,并将训练好的模型保存为 .hdl 文件格式。 希望这个示例代码能够帮助到你,祝你学习愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值