Halcon显示正常比列长宽比的方法

您所在的位置:网站首页 求图片原图 Halcon显示正常比列长宽比的方法

Halcon显示正常比列长宽比的方法

2024-07-16 09:18| 来源: 网络整理| 查看: 265

回顾

之前博文中,曾经提到,通过计算欲显示图片和窗口控件长、宽比例,对图像本身进行放缩,再进行显示的方法。 现在看来是因为当时对dev_set_part这个算子的理解不到位造成的。 Halcon/C#混合编程实现任意图片的原始长宽比显示+形状匹配定位

之前方法的缺点

之前的方法虽然也看似完成了目标,但是需要对图片本身进行放缩处理。这就使得在UI交互时,交互得到的位置坐标需要进行换算方可对应到图像的实际像素坐标。

正确的理解思路

想像我们有一张桌子,桌子上放了一个手机,现在我们用一个相机去给手机拍照,怎样让手机看起来占图片更大一些呢? 之前的方法相当于,我们把拍照用的相机位置固定了,然后,把真实世界的手机给放缩了。 正确的思路应该是,我们去调整相机的位置,远近,使手机在相片中的位置和大小显得变化了。事实上,真实的手机是没有办法放大和缩小的。

dev_set_part

这个算子其实就相当于是你用来拍照的相机。它一共有五个输入参数,第一个是窗口控件,后面四个是取景视野在真实世界中的左上角(列、行)和右下角坐标(列、行)。

实现

基于这个算子的功能,以下例证

dev_close_window () dev_open_window (0, 0, 400, 480, ‘gray’, WindowHandle) set_window_param (WindowHandle, ‘save_depth_buffer’, ‘true’) dev_clear_window () dev_update_window (‘off’) dev_open_file_dialog (‘read_image’, ‘default’, ‘default’, Selection) read_image (Image, Selection) get_window_extents (WindowHandle, Row, Column, winWidth, winHeight)

showPicture (Image, winWidth, winHeight)

gen_rectroi (WindowHandle, winHeight, winWidth, Row3, Column3, Phi, Length1, Length2)

以下是showPicture的内容:

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 := Width dispHeight := Width / winWHRatio dev_set_part (0, 0, dispHeight, dispWidth) dev_display (Image) endif

* 如果图片宽高比 小于 窗口宽高比 * 则高度方向顶格 if (picWHRatio < winWHRatio) dispWidth := Height * winWHRatio dispHeight := Height dev_set_part (0, 0, dispHeight, dispWidth) dev_display (Image) endif

else * 如果图片的长和宽都小于窗口,则以图片的原真实尺寸显示 dev_set_part (0, 0, winHeight, winWidth) dev_display (Image) endif return ()

以下是gen_rectroi的内容

dev_set_colored (3) draw_rectangle2_mod (WindowHandle, winHeight/2.0-1, winWidth/2.0-1, 0, winWidth/4.0, winHeight/4.0, Row3, Column3, Phi, Length1, Length2) dev_set_color (‘green’) gen_rectangle2_contour_xld (Rectangle, Row3, Column3, Phi, Length1, Length2) dev_display (Rectangle) dev_set_colored (3)

return ()

验证

采用一张264×245大小的图片,窗口的大小设置为400×480 则得到的显示为 在这里插入图片描述

在这里插入图片描述 作为对比,如果不调整显示区域,则默认填充整个窗口 在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3