HALCON是如何做到在一个比图片小的窗口中得到图片每个像素的灰度值的?在VC中实现这样的效果吗?

HALCON是如何做到在一个比图片小的窗口中得到图片每个像素的灰度值的?在VC中实现这样的效果吗?

问题描述:

在HALCON中读入一张图片,大小2448*2024,将该图片显示在宽、高均为图片尺寸1/4的窗口中。

将鼠标放在窗口中的图片上移动,屏幕的右下角即可显示每个像素的灰度值。

虽然,此处窗口的尺寸比图片的小,但是依然能够显示每个像素的坐标及灰度值。
我的疑问是:
1、在小窗口中显示图片,不是将图片压缩为与窗口同大小的尺寸了吗?即图片的尺寸也应该变为原来的1/4啊(612*512),为什么还能得到原图中像素坐!
标大于612和512的每个像素的灰度值?这一功能实现的原理是什么?

2、如果在VC的界面中,用PIC CONTROL来显示图片,如何实现上述HALCON的功能,即窗口虽然比较图片小,但依然可以在窗口中,根据鼠标的位置,得到原图中每个像素的灰度值。

往高手给与指点。非常感谢!

下面是HALCON代码:

dev_update_off ()
read_image (ImageOrigion, 'logok/2.bmp')
get_image_size (ImageOrigion, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width/4, Height/4, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display(ImageOrigion)

所打开的窗口如下图:
图片说明

在窗口中的图片上移动鼠标,屏幕右下方显示,可以得到原图中每个像素的灰度值,如下图:

图片说明

halcon里面有个 get_mposition_sub_pix 的算子了解一下 直接获取图片像素点的坐标