halcon图像旋转不丢角

halcon图像旋转不丢角

如果一张0度的图,经过旋转一定角度,不加处理,四个角肯定会消失在视野中,那怎么才能做到不丢四角的旋转呢.
算法很简单,用最小外接正方形的方法去生成旋转矩阵就可以,这样做到旋转之后不丢角.

read_image (Image, ‘printer_chip/printer_chip_01’)
获取图像宽和高
get_image_size (Image, Width, Height)
旋转图像的最小外接正方形边长
minImageWidth:=sqrt(Width
Width+Height
Height)
minImageHeight:=sqrt(WidthWidth+HeightHeight)
*设置旋转的角度
Angle:=15
*建立旋转矩阵,这里将原图旋转15°
vector_angle_to_rigid ( Height/2,Width/2, 0, minImageHeight/2, minImageHeight/2, rad(Angle), HomMat2D)
*获取图像的通道数
count_channels (Image, Channels)
*如果是单通道图像
if (Channels1)
*生成一个画布
gen_image_const (Image1, ‘byte’, minImageWidth, minImageHeight)
*将image放到画布上
overpaint_gray (Image1, Image)
*图片旋转
affine_trans_image (Image1, ImageAffineTrans, HomMat2D, ‘constant’, ‘false’)
get_image_size (ImageAffineTrans, Width1, Height1)
dev_clear_window ()
dev_display (ImageAffineTrans)
*如果是三通道彩色图像
elseif (Channels
3)
*分解三通道图像
decompose3 (Image, Image11, Image2, Image3)
*生成三个画布
gen_image_const (Image4, ‘byte’, minImageWidth, minImageHeight)
gen_image_const (Image5, ‘byte’, minImageWidth, minImageHeight)
gen_image_const (Image6, ‘byte’, minImageWidth, minImageHeight)
*依次将三个单通道图像overpaint到画布上
overpaint_gray (Image4, Image11)
overpaint_gray (Image5, Image2)
overpaint_gray (Image6, Image3)
*仿射变换单通道图像
affine_trans_image (Image4, ImageAffineTrans1, HomMat2D, ‘constant’, ‘false’)
affine_trans_image (Image5, ImageAffineTrans2, HomMat2D, ‘constant’, ‘false’)
affine_trans_image (Image6, ImageAffineTrans3, HomMat2D, ‘constant’, ‘false’)
*三个单通道图像合成彩色图像
compose3 (ImageAffineTrans1, ImageAffineTrans2, ImageAffineTrans3, MultiChannelImage)
dev_clear_window ()
dev_display (MultiChannelImage)
endif
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值