1

任何人都知道我该如何实现这个?我想要一个基本上与 matlab 中的 impoly 或 imageJ 中的“多边形部分”工具完全相同的功能,您可以在其中单击以形成多边形部分,然后可以调整每个节点等。我也想访问从 Qt 到这个函数,因为我正在尝试为我编写的一个小程序制作一个 gui。

另外,我想避免调用 matlab 函数,因为它是不是免费的图像处理工具箱的一部分。谢谢。

4

2 回答 2

3

我认为实现这一点的最佳方法是使用 Qt Graphics View 框架。创建一个场景,其中一个项目在后面显示您的图像,并在顶部添加代表多边形角的可拖动项目。

您的选择工具可能应该是 QGraphicsObject 的子类,将多边形角作为子项托管,并且在用户重新调整选择时更新角下方的 QGraphicsPolygonItem。由于 QGraphicsObject 继承 QObject,您可以在选择更改时使用 QPolygonF 或 QPolygon 参数发出信号,通知应用程序的其他部分

这个演示应该是您需要的角落调整功能的一个很好的例子。

Qt Pathstroke 演示

(嗯,这个例子实现了从头开始绘制和拖动控制点。我相信你可以通过使用 QGraphicsEllipseItem 来做到这一点,并对它们的位置变化做出反应)

于 2012-05-19T16:26:28.483 回答
2

我认为您需要自己编写代码。在C++ GUI Programming with Qt 4一书中有一个很好的例子(网上有一个 PDF 副本;我认为这是合法的),他们向您展示了如何使用节点和链接创建图表。本章称为“使用图形视图进行基于项目的渲染”。

基本思想是你有一些可拖动的节点,它们是标志设置为的QGraphicsItems,然后是连接它们的一些链接,它们是QGraphicsLineItems。所有这些都将进入一个表示 ROI 的复合 QGraphicsItem ,所有这些都将进入一个QGraphicsScene,由QGraphicsView显示。ItemIsMovabletrue

底线:没有 MATLAB 函数的内置副本,但所有工具都在那里。

于 2012-05-19T16:58:12.137 回答