[Halcon学习笔记]Halcon窗口进行等比例显示图像

embedded/2024/11/15 5:49:32/

目录

  • 需求分析
  • Halcon显示原理
  • 显示实现
  • 具体实现Halcon代码

需求分析

在使用Halcon加载图像时,点击Halcon的适应窗口,图像都会按照窗口大小对图像进行拉伸后显示,实际项目中,需要等比例显示图像,体现图像原本的尺寸细节和效果,特别是在Qt或VS中,需要方便调节,这里记录一下等比例显示图像的原理和实现方法。

Halcon_3">Halcon显示原理

Halcon显示图像的原理就是去调节视场大小,相当于图像的尺寸大小是固定的,通过调节相机高度和视野去适配图像的大小,这样图像的实际尺寸就不会被缩放。
Halcon中一般使用dev_set_part这个算子,算子四个参数,主要对应的是Halcon视场的左上和右下对应的行列尺寸,比如说图像宽度是500,你想显示的时候左右各留100空余背景,这时列的设置就是(-100,500+100),相当于从-100开始,将图像移动到中间。

显示实现

实际显示的时候,不仅要考虑图像的纵横比,还要考虑控件窗口的纵横比,如果图像的宽高比大于窗口的宽高比,这个时候就把图像的宽度方向靠近边缘,高度方向上下预留空白。

picWHRatio := 1.0 * Width / Height
winWHRatio := 1.0 * winWidth / winHeightif (picWHRatio >= winWHRatio)* 如果图片宽高比 大于 窗口宽高比* 则宽度方向顶格dispWidth := WidthdispHeight := Width / winWHRatiooffset:=(dispHeight-Height)/2dev_set_part (-offset, 0, dispHeight-offset, dispWidth)

宽图像
如果图像的宽高比小于窗口的宽高比,这个时候就把图像的高度方向靠近边缘,宽度方向左右预留空白。

picWHRatio := 1.0 * Width / Height
winWHRatio := 1.0 * winWidth / winHeight
if (Width > winWidth or Height > winHeight)if (picWHRatio < winWHRatio)* 如果图片宽高比 小于 窗口宽高比* 则高度方向顶格dispWidth := Height * winWHRatiodispHeight := Heightoffset:=(dispWidth-Width)/2dev_set_part (0, -offset, dispHeight, dispWidth-offset)

窄图像
如果图像的尺寸均小于控件的尺寸,此时将图像的尺寸乘以控件的纵横比之后再像上边进行比较。

    * 如果图片的长和宽都小于窗口if(picWHRatio >= winWHRatio)dispWidth := WidthdispHeight := Width / winWHRatiooffset:=(dispHeight-Height)/2dev_set_part (-offset, 0, dispHeight-offset, Width)elsedispWidth := Height * winWHRatiodispHeight := Heightoffset:=(dispWidth-Width)/2dev_set_part (0, -offset, dispHeight, dispWidth-offset)endif  

小尺寸图像

Halcon_51">具体实现Halcon代码

dev_close_window ()
dev_open_window (0, 0, 400, 400, 'gray', WindowHandle)
dev_clear_window ()
dev_update_window ('off')read_image (Image, 'C:/Users/Administrator/Desktop/lena小尺寸.png')
get_window_extents (WindowHandle, Row, Column, winWidth, winHeight)set_system ('int_zooming', 'false')
get_image_size (Image, Width, Height)
picWHRatio := 1.0 * Width / Height
winWHRatio := 1.0 * winWidth / winHeight
if (Width > winWidth or Height > winHeight)if (picWHRatio >= winWHRatio)* 如果图片宽高比 大于 窗口宽高比* 则宽度方向顶格dispWidth := WidthdispHeight := Width / winWHRatiooffset:=(dispHeight-Height)/2dev_set_part (-offset, 0, dispHeight-offset, dispWidth)else* 如果图片宽高比 小于 窗口宽高比* 则高度方向顶格dispWidth := Height * winWHRatiodispHeight := Heightoffset:=(dispWidth-Width)/2dev_set_part (0, -offset, dispHeight, dispWidth-offset)endif
else* 如果图片的长和宽都小于窗口if(picWHRatio >= winWHRatio)dispWidth := WidthdispHeight := Width / winWHRatiooffset:=(dispHeight-Height)/2dev_set_part (-offset, 0, dispHeight-offset, Width)elsedispWidth := Height * winWHRatiodispHeight := Heightoffset:=(dispWidth-Width)/2dev_set_part (0, -offset, dispHeight, dispWidth-offset)endif  
endif
dev_display (Image)

http://www.ppmy.cn/embedded/43288.html

相关文章

Marvelous Designer12 解锁版安装教程 (3D服装设计软件)

前言 Marvelous Designer允许您使用我们的尖端设计软件创建美丽的3D虚拟服装。最后&#xff0c;使用工具在提高质量的同时节省时间&#xff0c;为您的设计注入活力。从基本衬衫到复杂的褶皱连衣裙和粗糙的制服&#xff0c;Marvelous Designer几乎可以将织物纹理和物理特性复制…

idea中快速找到当前git地址

idea中快速找到当前git地址 然后双击就可以看到地址了

他用AI,抄袭了我的AI作品

《大话西游》里面有一句经典台词&#xff1a;每个人都有一个妈&#xff0c;但是“你妈就一定是你妈吗&#xff1f;” 用AI创作的艺术作品&#xff0c;也走进类似的困境&#xff1a;如何证明你用AI生成的作品&#xff0c;就是你的作品&#xff1f; 近日&#xff0c;腾讯科技独…

Kotlin基础之面向对象编程

1. 类与对象 介绍 类&#xff1a;类是对象的蓝图或模板&#xff0c;它定义了对象的属性和方法。对象&#xff1a;对象是类的实例&#xff0c;具有类的属性和方法。 使用 // 定义一个类 class Person { var name: String "" var age: Int 0 // 方法 fun introdu…

WebGL学习(一)渲染关系

学习webgl 开发理解渲染关系是必须的&#xff0c;也非常重要&#xff0c;很多人忽视了这个过程。 我这里先简单写一下&#xff0c;后面尽量用通俗易懂的方式&#xff0c;举例讲解。 WebGL&#xff0c;全称Web Graphics Library&#xff0c;是一种在网页上渲染3D图形的技术。它…

无人驾驶试点——守住安全底线

最近&#xff0c;自动驾驶“无人化商业运营”话题很热。 先是北京亦庄自动驾驶出租车迎来无人化商业试点&#xff0c;将安全员从主驾移到了副驾。接着《深圳经济特区智能网联汽车管理条例》施行&#xff0c;明确了不同级别自动驾驶事故&#xff0c;特别是无人驾驶的责任主体。…

【重制版】Unity Meta Quest 一体机开发(一):前期准备,Meta XR SDK导入和环境配置,配置玩家物体

文章目录 &#x1f4d5;教程说明&#x1f4d5;Meta XR SDK 介绍&#x1f4d5;前期准备⭐开启开发者模式⚡在 Meta 官网申请开发者⚡在 Meta Quest 手机 APP 开启开发者 ⭐电脑需要下载的软件⚡Meta Quest Link&#xff08;以前叫做Oculus PC客户端&#xff09;⚡Oculus ADB Dri…

条款9:利用destructors避免泄露资源

对指针说拜拜。承认吧&#xff0c;你从未真正喜欢过它&#xff0c;对不&#xff1f; 好&#xff0c;你不需要对所有指针说拜拜&#xff0c;但是你真的得对那些用来操控局部性资源(local resources&#xff09;的指针说莎唷娜拉了。 举个例子&#xff0c;你正在为“小动物收养…