pyqt测量图片中两点距离的工具
时间: 2023-11-18 08:05:37 浏览: 81
以下是一个使用PyQt的简单工具,可以测量图片中两点之间的距离:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView, QGraphicsLineItem
from PyQt5.QtGui import QPixmap, QMouseEvent, QPen
from PyQt5.QtCore import Qt, QPointF
class MainWindow(QMainWindow):
def __init__(self, filename):
super().__init__()
# 加载图片
self.pixmap = QPixmap(filename)
# 创建场景和视图
self.scene = QGraphicsScene()
self.view = QGraphicsView(self.scene)
self.view.setSceneRect(0, 0, self.pixmap.width(), self.pixmap.height())
self.view.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
# 添加图片到场景中
self.image_item = self.scene.addPixmap(self.pixmap)
# 连接鼠标点击事件
self.view.mousePressEvent = self.mousePressEvent
# 设置主窗口
self.setCentralWidget(self.view)
self.setWindowTitle('距离测量工具')
# 存储上一次点击的点
self.last_point = None
def mousePressEvent(self, event: QMouseEvent):
# 如果是左键单击,则添加一个点
if event.button() == Qt.LeftButton:
point = self.view.mapToScene(event.pos())
if not self.last_point:
self.last_point = point
else:
# 计算距离并显示在命令行中
distance = self.last_point.distanceToPoint(point)
print(f'距离:{distance:.2f}像素')
# 在场景中添加一条线段
line = QGraphicsLineItem(self.last_point.x(), self.last_point.y(), point.x(), point.y())
line.setPen(QPen(Qt.red, 2))
self.scene.addItem(line)
# 重置上一个点
self.last_point = None
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow('image.jpg')
window.show()
sys.exit(app.exec_())
```
这个工具加载指定的图片,并在场景中显示它。当用户单击左键时,它会添加一个点。第二次单击时,它将计算两个点之间的距离,并在命令行中显示它。它还在场景中添加一条红色线段,表示两个点之间的距离。
阅读全文