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

目录

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

需求分析

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

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代码

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.mzph.cn/web/18440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

抖音和快手哪个好?来全面了解一下他们的区别!

快手和抖音虽然是短视频领域的两大主流平台&#xff0c;但是两者也存在本质的区别&#xff0c;从产品定位、用户群体到视频风格、变现模式&#xff0c;它们的特征都不一样。 &#xff08;一&#xff09;两个平台核心区别&#xff1a; 1. 核心用户不一样&#xff1a;抖音以1、…

dubbo复习:(7)使用sentinel对dubbo服务进行限流

一、下载sentinel-dashboard 并启动 java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:8080 -Dproject.namesentinel-dashboard -jar sentinel-dashboard.jar二、在spring boot应用中增加sentinel相关依赖 <dependency><groupId>com.alibaba.csp…

护网在即,请拿你走你的蓝队神器!~

前言 养兵千日用兵一时&#xff0c;护网已经临近了&#xff0c;你是不是还在考虑现场一系列可能发生的情况&#xff1f;提前找好工具,避免在甲方面前太尴尬? 你需要它&#xff01; 据我了解&#xff0c;去年国护的时候就已经有不少攻城狮在使用我们的蓝队应急响应工具箱&am…

【易错题】数据可视化基础练习题(30道选择题)#CDA Level 1

本文整理了数据可视化基础知识相关的练习题&#xff0c;共30道&#xff0c;适用于想巩固数据可视化知识的同学&#xff0c;也可作为备考CDA一级的补充习题。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-可视化&#xff09;。 1&#xff09; 2&#xff09; 3&…

Windows10(家庭版)中DockerDesktop(docker)的配置、安装、修改镜像源、使用

场景 Windows10中Docker的安装与遇到的那些坑: Windows10中Docker的安装与遇到的那些坑_在 docker.core.logging.httpclientexceptionintercept-CSDN博客 上面讲Docker Desktop在windows10非家庭版上的安装&#xff0c;如果是家庭版&#xff0c;则需要执行如下步骤。 注&am…

vue3快速上手笔记(尚硅谷)

[TOC]# 1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#…

CCF20211201——序列查询

CCF20211201——序列查询 代码如下&#xff1a; #include<bits/stdc.h> using namespace std; #define Max 10000000 int a[Max]{0},b[Max]{0}; int main() {int n,m;int sum0,x0,flag0;cin>>n>>m;for(int i1;i<n;i){cin>>a[i];}for(int i0,x0;i&l…

再次疾呼:一稿多投是作者的合法权利!

近日&#xff0c;有作者反应在收到拒稿邮件之后另投他刊&#xff0c;竟然被判定一稿多投。 出版社解释说现在大多数期刊都是使用投稿系统收稿&#xff0c;如果被退稿后马上又投稿其他期刊&#xff0c;由于时间距离太近&#xff0c;仍然会被系统判定为一稿多投的。核心期刊编辑…

【linux:基础IO】

目录 系统调用的文件接口&#xff1a; open read: write: lseek: close: 系统调用的文件接口&#xff1a; open 当文件存在时&#xff1a;int open (const char*pathname,int flags)当文件不存在时&#xff1a;int open (const char* pathname,int flags,mode_t mode) 返…

广东中科产业研究院正式批复成为世界酒中国菜的指导单位

广东中科产业研究院正式批复成为“世界酒中国菜”系列活动指导单位 经过深入审议与严格把关&#xff0c;广东中科产业研究院已正式批复荐酒师国际认证&#xff08;广州&#xff09;有限公司作为“世界酒中国菜”系列活动的指导单位。此举旨在深入贯彻共建“一带一路”倡议&…

ctfshow web 月饼杯II

web签到 <?php //Author:H3h3QAQ include "flag.php"; highlight_file(__FILE__); error_reporting(0); if (isset($_GET["YBB"])) {if (hash("md5", $_GET["YBB"]) $_GET["YBB"]) {echo "小伙子不错嘛&#xff…

《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 有些网站为了节省流量和资源&#xff0c;提高加载效率&#xff0c;采用的是动态加载&#xff08;懒加载&#xff09;的&#xff0c;也就是当拖动页面右侧滚动条后会自动加载网…

【C++ ——— 继承】

文章目录 继承的概念即定义继承概念继承定义定义格式继承关系和访问限定符继承基类成员访问方式的变化 基类对象和派生类对象的赋值转换继承中的作用域派生类中的默认成员函数继承与友元继承与静态成员菱形继承 继承的概念即定义 继承概念 继承(inheritance)机制是面向对象程…

AdroitFisherman模块测试日志(2024/5/28)

测试内容 测试AdroitFisherman分发包中Base64Util模块。 测试用具 Django5.0.3框架&#xff0c;AdroitFisherman0.0.29 项目结构 路由设置 总路由 from django.contrib import admin from django.urls import path,include from Base64Util import urls urlpatterns [path…

操作系统—简要分析FAT文件系统

文章目录 简要分析FAT文件系统1.FAT的起源与发展历史2.FAT的基本结构与目录管理机制(1).基本结构(2).文件分配表(3).根目录区(4).数据区 3.优点与缺点4.改进与替代方案(1).exFAT(2).ext2/3/4(3).NTFS 小结参考文献 简要分析FAT文件系统 1.FAT的起源与发展历史 为了更好地管理磁…

​LabVIEW超声波检测

LabVIEW超声波检测 在现代工业生产和科学研究中&#xff0c;超声检测技术因其无损性、高效率和可靠性而被广泛应用于材料和结构的缺陷检测。然而&#xff0c;传统的超声检测仪器往往依赖于操作者的经验和技能&#xff0c;其检测过程不够智能化&#xff0c;且检测结果的解读具有…

Milvus的内存索引

简介&#xff1a; 这篇文章主要介绍milvus支持的各种内存索引&#xff0c;以及它们最适用的场景&#xff0c;还有用户为了获得更好的搜索性能可以配置的参数。 索引是有效组织数据的过程&#xff0c;它的主要角色是在大的数据集中显著的加速耗时的查询从而有效的进行相似搜索…

HTML静态网页成品作业(HTML+CSS)——动漫熊出没介绍网页(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有3个页面。 二、作品演示 三、代…

重构2:重构的原则

最近在看重构2&#xff1a;改善既有代码的设计这本书&#xff0c;对于代码重构指导非常有帮助&#xff0c;然后也是做个笔记记录下&#xff0c;以下是我阅读本书的前两章的时候整理的思维导图&#xff1a;

Python-3.12.0文档解读-内置函数ord()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 详细说明 概述 语法 参数 返回值 示例 注意事项 应用场景 记忆策略 常用场景…