在Halcon中有两个用于图像旋转的函数:

1,rotate_image

*Image和ImageRotate分别是输入和输出图像

*Phi是输入的旋转度数

*interpolation是内插方式,默认为'constant'

rotate_image(Image : ImageRotate : Phi, Interpolation : )

2,affine_trans_image

*开辟一个旋转矩阵
()hom_mat2d_identity (HomMat2D)
*为旋转矩阵赋值
*HomMat2D是输入的旋转矩阵
*Phi是输入的旋转角度
*Px和Py分别是输入的旋转中心x坐标值和y坐标值
*HomMat2DRotate是输出的旋转矩阵
()hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
*实施旋转
*Image : ImageAffinTrans分别为输入输出图像
*HomMat2D是赋值后的旋转矩阵。注意:是赋值后的
*Interpolation是内插方式,默认为'constant'
*AdaptImageSize是bool变量,判断输出图像的大小是否发生变化
()affine_trans_image(Image : ImageAffinTrans : HomMat2D, Interpolation, AdaptImageSize : )

但是,在使用过程中,遇到一个问题。在图片进行旋转之后,图片的四个角都不能很好的保留。我想做的是将图片旋转后,将图片不会缺损,也不会缩小,也就是说原图片旋转后将扩大。然后,我找到一种折中的办法,但是速度很慢,也许达不到要求。还是分享记录一下吧。

optimize_aop ('rotate_image', 'byte', 'no_file', ['file_mode','model','parameters'], ['nil','threshold','false'])
set_system ('parallelize_operators', 'true')//只需开一次
get_image_size(image_ori, Width, Height)
gen_rectangle1(Rectangle,,,Height-,Width-)
get_region_points(Rectangle, Rows, Columns)
***************单通道图像的旋转****************
if(c=)
get_grayval(image_ori,Rows,Columns,Grayval)
HeightL:=
WidthL:=
gen_image_const(Image1, 'byte', WidthL, HeightL)
Rows:=Rows+(HeightL/-Height/)
Columns:=Columns+(WidthL/-Width/)
set_grayval(Image1,Rows,Columns,Grayval)
Phi1:=rad(angle)
vector_angle_to_rigid(HeightL/, WidthL/, , HeightL/, WidthL/, -Phi1, HomMat2D1)
affine_trans_image(Image1, image_dst, HomMat2D1, 'constant', 'false')
**************3通道彩色图像的旋转****************
elseif(c=)
decompose3(image_ori, ImageR, ImageG, ImageB)
get_grayval(ImageR,Rows,Columns,GrayvalR)
get_grayval(ImageG,Rows,Columns,GrayvalG)
get_grayval(ImageB,Rows,Columns,GrayvalB)
HeightL:=
WidthL:=
gen_image_const(Image1, 'byte', WidthL, HeightL)
gen_image_const(Image2, 'byte', WidthL, HeightL)
gen_image_const(Image3, 'byte', WidthL, HeightL)
Rows:=Rows+(HeightL/-Height/)
Columns:=Columns+(WidthL/-Width/)
set_grayval(Image1,Rows,Columns,GrayvalR)
set_grayval(Image2,Rows,Columns,GrayvalG)
set_grayval(Image3,Rows,Columns,GrayvalB)
compose3(Image1, Image2, Image3, MultiChannelImage)
Phi1:=rad(-)
vector_angle_to_rigid(HeightL/, WidthL/, , HeightL/, WidthL/, -Phi1, HomMat2D1)
affine_trans_image(MultiChannelImage, image_dst, HomMat2D1, 'constant', 'false') endif

Halcon旋转图片的研究的更多相关文章

  1. ios新手开发——toast提示和旋转图片加载框

    不知不觉自学ios已经四个月了,从OC语法到app开发,过程虽然枯燥无味,但是结果还是挺有成就感的,在此分享我的ios开发之路中的小小心得~废话不多说,先上我们今天要实现的效果图: 有过一点做APP经 ...

  2. Camera图片特效处理综述(Bitmap的Pixels处理、Canvas/paint的drawBitmap处理、旋转图片、裁截图片、播放幻灯片浏览图片<线程固定时间显示一张>)

    一种是直接对Bitmap的像素进行操作,如:叠加.边框.怀旧.(高斯)模糊.锐化(拉普拉斯变换). Bitmap.getPixels(srcPixels, 0, width, 0, 0, width, ...

  3. exif.js 旋转图片

    还是那个问题:网上的大胸弟们BB一大堆,没几个给的代码能用的,话不多说,直接上demo: 链接:https://pan.baidu.com/s/1jJ6vnt8 密码:swwm 不要忽视demo中的s ...

  4. vue 添加旋转图片 修改css transform 值

    //点击放大图片并旋转图片 conponents组建 <template>    <!-- 过渡动画 -->    <transition name="fade ...

  5. JQ 实现轮播图(3D旋转图片轮播效果)

    轮播图效果如下: 代码: <!DOCTYPE html> <html xmlns="/www.w3.org/1999/xhtml"> <head> ...

  6. java旋转图片

    /** * 旋转角度 * @param src 源图片 * @param angel 角度 * @return 目标图片 */ public static BufferedImage rotate(I ...

  7. 【Thumbnailator】java 使用Thumbnailator实现等比例缩放图片,旋转图片等【转载】

    Thumbnailator概述:     Thumbnailator是与Java界面流畅的缩略图生成库.它简化了通过提供一个API允许精细的缩略图生成调整生产从现有的图像文件的缩略图和图像对象的过程, ...

  8. C#图片处理之:旋转图片90度的整数倍

    原文:C#图片处理之:旋转图片90度的整数倍 旋转图片90的整数倍那真是太简单了.         public static Bitmap KiRotate90(Bitmap img)        ...

  9. canvas旋转图片

    canvas旋转图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

随机推荐

  1. Opencv undefined reference to `cv::imread() Ubuntu编译

    Ubuntu下编译一个C++文件,C++源程序中使用了opencv,opencv的安装没有问题,但是在编译的过程中出现如下错误: undefined reference to `cv::imread( ...

  2. C# 实现CRC16校验

    前言 本文将使用一个NuGet公开的组件技术来实现CRC16校验功能,提供了一些简单的API,来方便的实现. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控 ...

  3. SSM前言——相关设计模式

    1.使用代理对象,是为了在不修改目标对象的基础上,增强主业务逻辑.客户类真正的想要访问的对象是目标对象,但客户类真正可以访问的对象是代理对象. 2.静态代理是指,代理类在程序运行前就已经定义好,其与目 ...

  4. 面试题 -AR VR MR以及CR的简单介绍

    AR 增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像.视频.3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互 ...

  5. js空数组

    首先我们定义一个空的数组: var a = [ ]; 数组a里面是空的没有值,接下来我们打印: console.log(!!a); 因为数组是空的,此处应该为false. 恰好相反,!!a为true. ...

  6. tree-lstm初探

    https://zhuanlan.zhihu.com/p/35252733 可以先看看上面知乎文章里面的例子 Socher 等人于2012和2013年分别提出了两种区分词或短语类型的模型,即SU-RN ...

  7. SQL-记录删除篇-007

    删除记录: delete * from table_name 解释:删除表中的所有数据 delete * from table_name where id<10 解释:删除表中id小于10的数据 ...

  8. solr 学习笔记(一)--搜索引擎简介

    一 搜索引擎是什么一套可对大量结构化.半结构化数据.非结构化文本类数据进行实时搜索的专门软件最早应用于信息检索领域,经谷歌.百度等公司推出网页搜索而为大众广知.后又被各大电商网站采用来做网站的商品搜索 ...

  9. PythonStudy——字符串扩展方法 String extension method

    ')) ')) print('***000123123***'.lstrip('*')) print('***000123123***'.rstrip('*')) print('华丽分割线'.cent ...

  10. golang-grpc-Unimplemented-desc

    golang 调用grpc 服务方法时候提示:"rpc error: code = Unimplemented desc ="的错误, 这是由于pb中的package name 被 ...