zoomable-image-label-master
所属分类:其他
开发工具:QT
文件大小:511KB
下载次数:0
上传日期:2021-03-05 16:43:24
上 传 者:
啦啦啦啦啦yang
说明: 以鼠标指针为中心缩放图片以及ROI的框选
(Zoom image and ROI box selection with mouse pointer as the center)
文件列表:
LICENSE (1063, 2019-12-13)
QTImageDisplay.sln (1424, 2019-12-13)
QTImageDisplay (0, 2019-12-13)
QTImageDisplay\Debug_x64.props (542, 2019-12-13)
QTImageDisplay\QTImageDisplay.vcxproj (11916, 2019-12-13)
QTImageDisplay\QTImageDisplay.vcxproj.filters (3106, 2019-12-13)
QTImageDisplay\Release_x64.props (542, 2019-12-13)
QTImageDisplay\resources (0, 2019-12-13)
QTImageDisplay\resources\qtimagedisplay.qrc (50, 2019-12-13)
QTImageDisplay\src (0, 2019-12-13)
QTImageDisplay\src\main (0, 2019-12-13)
QTImageDisplay\src\main\main.cpp (183, 2019-12-13)
QTImageDisplay\src\ui (0, 2019-12-13)
QTImageDisplay\src\ui\forms (0, 2019-12-13)
QTImageDisplay\src\ui\forms\qtimagedisplay.ui (3820, 2019-12-13)
QTImageDisplay\src\ui\mainwindow (0, 2019-12-13)
QTImageDisplay\src\ui\mainwindow\MainWindow.cpp (1891, 2019-12-13)
QTImageDisplay\src\ui\mainwindow\MainWindow.h (346, 2019-12-13)
QTImageDisplay\src\ui\widget (0, 2019-12-13)
QTImageDisplay\src\ui\widget\RoiImageWidget.cpp (11219, 2019-12-13)
QTImageDisplay\src\ui\widget\RoiImageWidget.h (2007, 2019-12-13)
QTImageDisplay\src\ui\widget\ZoomImageWidget.cpp (9991, 2019-12-13)
QTImageDisplay\src\ui\widget\ZoomImageWidget.h (2627, 2019-12-13)
images (0, 2019-12-13)
images\demo.gif (517351, 2019-12-13)
images\test_image.jpg (113015, 2019-12-13)
# Scalable ROI-selectable Image Label
[TOC]
## 简介
Subclasses of QLabel that supports picture zooming in and out under cursor position as well as ROI selection
自定义的QLabel子类,实现了以鼠标指针为中心缩放图片以及ROI的框选
## Demo
## 原理
可以认为存在三个坐标系
1. **原图像素坐标系O
origin**
原点P
origin_o = (0, 0)
最远点P
origin_max = (image.width, image.height)
2. **放大图像素坐标系O
zoom**
原点P
zoom_o = (0, 0)
最远点P
zoom_max = (label.width * zoom_ratio, label.height * zoom_ratio)
3. **控件坐标系O
widget**
原点P
widget_o = (0, 0)
最远点P
widget_max = (label.width, label.height)
原图像素坐标系和控件坐标系的大小不会改变,而放大图像素坐标系的大小会随zoom_ratio改变而改变。因此,无论是图片显示还是ROI框选,都可以把控件里的点先转到原图上,需要显示时再把对应的点由原图转到控件坐标系里来,步骤如下:
### 1. O
widget→O
zoom
已知鼠标位置在O
widget下的坐标,记为P
widget_a=(x
w, y
w),需要得到其在O
zoom下的坐标P
zoom_a(x
z, y
z)
P
zoom_a = P
widget_a + display_start_point_
display_start_point_为P
widget_o在O
zoom下的坐标
### 2. O
zoom→O
origin
已知P
zoom_a,需要得到其在O
origin下的坐标P
origin_a(x
o, y
o)
X方向转换比例X
factor = image.width / (label.width * zoom_ratio)
Y方向转换比例Y
factor = image.height/ (label.height* zoom_ratio)
则
x
o = x
z * X
factor
y
o = y
z * Y
factor
### 3. 将P
origin_a转换到新的O
zoom下
注意滚轮转动后,zoom_ratio_变为了zoom_ratio_'。此时,原图上的点P
origin_a在新的O
zoom下的坐标P
zoom_a'为
P
zoom_a'.x = x
z * zoom_ratio_' / zoom_ratio
P
zoom_a'.y = x
z * zoom_ratio_' / zoom_ratio
近期下载者:
相关文件:
收藏者: