【问题标题】:Developing a GUI using OpenCV and Qt C++- High-Resolution images使用 OpenCV 和 Qt C++ 开发 GUI - 高分辨率图像
【发布时间】:2015-11-28 01:37:43
【问题描述】:

我的计算机科学实验室选择我来开发图形用户界面 (GUI),其主要目标是允许用户打开高分辨率图像(TIFF 格式)并对其进行操作(放大、缩小、绘制矩形、创建和编辑注释...)。

我想使用 Qt 和 OpenCV 构建这个 GUI。不过,我对在这个项目中使用 OpenCV 有一些疑问。

因此,我的问题是:

  • Qt 是否允许您处理高分辨率 TIFF 图像(2000x3000 像素?
  • OpenCV 是否允许您处理高分辨率 TIFF 图像?
  • 将 OpenCV TIFF 图像转换为 Qt TIFF 图像是否容易?

【问题讨论】:

  • OpenCV 用于计算机视觉,而不是用于图像渲染。因此,OpenCV 会将每个图像完全加载到内存中,并且通常适用于 24 位 BGR 图像。但是,2000x3000 并不是那么大的尺寸,我想它会起作用。 OpenCV 提供了访问子图像的简单方法和调整图像大小的简单方法(使用不同的插值方法)。您可能需要这两个功能来显示不适合您的屏幕的图像。不确定 TIFF,但 OpenCV 不允许您访问已加载图像的任何元信息。
  • 因此,我想 OpenCV 可能是打开 Tiff 图像的一个很好的解决方案。但是Qt?它可以做同样的工作吗?
  • 我会使用 tiff 库(或 opencv,如果足够)进行加载,使用 openCV 调整大小/子图像,使用 Qt 显示 + 用户输入
  • 好的,非常感谢。
  • tiff 图像将由 tiff 库或 openCV 加载,Qt 将仅访问具有 RGB 值的内存块。因此,对于 Qt 来说,在所有文件读取和图像解码已经由 tiff 库或 OpenCV 完成之前,该图像之前是什么类型的文件并不重要。但是:可能这是一个直接在 Qt 中使用 TIFF 图像的插件。如果可行,则根本不需要 OpenCV(如果 Qt 允许您缩放/子图像等,并且 Qt 可以处理大尺寸图像)。但是如果你只使用Qt来显示,你完全不用关心Qt中的TIFF。

标签: c++ qt user-interface opencv


【解决方案1】:

创建和编辑注释?这听起来比处理 TIFF 要​​走得更远。

假设原始帖子的动机被正确理解 - 创建能够处理大型 TIFF 图像文件的 GUI,它还允许用户创建和(稍后)编辑 annotations 和其他图形元素(rectangles 等)

解决方案的方式与如何在OpenCV 和类似工具中处理 TIFF 图像有很大不同。

如果目标不仅仅是重新发明轮子,那么 CERN 有一个可爱而强大的工具 xfig 自古以来就被使用,它为您的想法提供了一个强大的框架。

使用xfig 的语法引擎和渲染选项,您可以在工作的整个生命周期中保持对象可组合和可编辑,并留出更多时间来开发自己的 GUI 概念,而不是花费大量时间关于如何在最底层处理标准格式像素图和分层矢量对象的内部工作。

元文件看起来像:

#FIG 3.2
Landscape
Center
Inches
Letter  
200.00
Single
-3
1200 2
6 8625 825 11775 7275
6 8625 1125 9075 3975
6 8625 1125 9075 2175
6 8625 1125 9075 1575
2 1 0 3 0 7 0 0 -1 0.000 1 0 -1 0 0 2
     8700 1200 9000 1200
2 1 0 3 0 7 0 0 -1 0.000 1 0 -1 0 0 2
     8700 1500 9000 1500
-6
6 8625 1725 9075 2175
2 1 0 3 0 7 0 0 -1 0.000 1 0 -1 0 0 2
     8700 1800 9000 1800
2 1 0 3 0 7 0 0 -1 0.000 1 0 -1 0 0 2
     8700 2100 9000 2100
...
4 0 0 0 0 0 20 0.0000 4 195 1080 35100 19800 Z-80 PIO\001
4 0 0 0 0 0 15 0.0000 4 180 930 34575 21075 CTL/DAT\001
4 0 0 0 0 0 15 0.0000 4 180 795 34575 21375 B/A SEL\001
4 0 0 0 0 0 15 0.0000 4 150 270 34575 21975 A6\001
4 0 0 0 0 0 15 0.0000 4 150 270 34575 22275 A5\001
4 0 0 0 0 0 15 0.0000 4 150 480 34575 22875 GND\001
4 0 0 0 0 0 15 0.0000 4 150 270 34575 24075 A0\001
4 0 0 0 0 0 15 0.0000 4 150 600 34575 24375 A STB\001
4 0 0 0 0 0 15 0.0000 4 150 570 34575 24675 B STB\001
4 0 0 0 0 0 15 0.0000 4 150 240 36525 21975 B6\001

结果可能如下所示:

【讨论】:

  • 但是你能把这个工具和Qt结合起来吗?
  • 由于 O/P 定义了您希望使用 Qt,是的,Qt 可能被视为 GUI 表示层(窗口管理器(设施)),而努力工作是基于 xfig 的作曲家 /渲染服务,提供功能。无论如何,Qt 是基于“幕后”的 X11 依赖项 >>> doc.qt.io/qt-4.8/requirements-x11.html 但是,项目架构和解决方案取决于您。
猜你喜欢
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2013-06-02
  • 1970-01-01
相关资源
最近更新 更多