• Halcon旋转图片的研究


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

    1,rotate_image

    *Image和ImageRotate分别是输入和输出图像
    
    *Phi是输入的旋转度数
    
    *interpolation是内插方式,默认为'constant'
    
    rotate_image(Image : ImageRotate : Phi, Interpolation : )

    2,affine_trans_image

    *开辟一个旋转矩阵
    (1)hom_mat2d_identity (HomMat2D)
    *为旋转矩阵赋值
    *HomMat2D是输入的旋转矩阵
    *Phi是输入的旋转角度
    *Px和Py分别是输入的旋转中心x坐标值和y坐标值
    *HomMat2DRotate是输出的旋转矩阵
    (2)hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
    *实施旋转
    *Image : ImageAffinTrans分别为输入输出图像
    *HomMat2D是赋值后的旋转矩阵。注意:是赋值后的
    *Interpolation是内插方式,默认为'constant' 
    *AdaptImageSize是bool变量,判断输出图像的大小是否发生变化
    (3)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,0,0,Height-1,Width-1)
    get_region_points(Rectangle, Rows, Columns)
    ***************单通道图像的旋转****************
    if(c=1)
        get_grayval(image_ori,Rows,Columns,Grayval)
        HeightL:=3084
        WidthL:=3184
        gen_image_const(Image1, 'byte', WidthL, HeightL)
        Rows:=Rows+(HeightL/2-Height/2)
        Columns:=Columns+(WidthL/2-Width/2)
        set_grayval(Image1,Rows,Columns,Grayval)
        Phi1:=rad(angle)
        vector_angle_to_rigid(HeightL/2, WidthL/2, 0, HeightL/2, WidthL/2, -Phi1, HomMat2D1)
        affine_trans_image(Image1, image_dst, HomMat2D1, 'constant', 'false')
    **************3通道彩色图像的旋转**************** elseif(c
    =3) 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:=3084 WidthL:=3184 gen_image_const(Image1, 'byte', WidthL, HeightL) gen_image_const(Image2, 'byte', WidthL, HeightL) gen_image_const(Image3, 'byte', WidthL, HeightL) Rows:=Rows+(HeightL/2-Height/2) Columns:=Columns+(WidthL/2-Width/2) 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(-35) vector_angle_to_rigid(HeightL/2, WidthL/2, 0, HeightL/2, WidthL/2, -Phi1, HomMat2D1) affine_trans_image(MultiChannelImage, image_dst, HomMat2D1, 'constant', 'false') endif
  • 相关阅读:
    常见的文件操作
    Select2
    android 人脸检测你一定会遇到的坑
    react+spring 记录跨域问题的解决方法
    android 解决连接电视机顶盒失败的方法
    java 零基础搭建dubbo运行环境
    android 获取wifi列表,如果你忽略了这个细节,可能你的软件会崩溃
    springMvc+swagger整合例子
    分享一个android静默安装,安装后重新启动app的方法
    分享一个android debug模式,出现 waiting for debugger把界面卡住,取巧的解决办法
  • 原文地址:https://www.cnblogs.com/supercxm/p/8640639.html
Copyright © 2020-2023  润新知