为了账号安全,请及时绑定邮箱和手机立即绑定

图像查看器 GUI 无法正确映射鼠标按下事件的坐标

图像查看器 GUI 无法正确映射鼠标按下事件的坐标

HUH函数 2021-09-11 14:59:42
我正在尝试将来自各种来源的基于 PyQt5 的图像查看器 Python 代码拼凑在一起,并扩展功能以在加载的图像中裁剪感兴趣区域 (ROI)。问题是映射坐标和鼠标点击在确定像素位置时会考虑滚动条和菜单栏。以下是加载图像并提供边界框功能的代码,但由于偏移,我似乎无法准确绘制/裁剪框。from PyQt5.QtCore import QDir, Qtfrom PyQt5.QtGui import QImage, QPainter, QPalette, QPixmapfrom PyQt5.QtWidgets import (QAction, QApplication, QFileDialog, QLabel,        QMainWindow, QMenu, QMessageBox, QScrollArea, QSizePolicy)from PyQt5.QtPrintSupport import QPrintDialog, QPrinterclass ImageViewer(QMainWindow):    def __init__(self):        super(ImageViewer, self).__init__()        self.printer = QPrinter()        self.scaleFactor = 0.0        self.imageLabel = QLabel()        self.imageLabel.setBackgroundRole(QPalette.Base)        self.imageLabel.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)        self.imageLabel.setScaledContents(True)        self.scrollArea = QScrollArea()        self.scrollArea.setBackgroundRole(QPalette.Dark)        self.scrollArea.setWidget(self.imageLabel)        self.setCentralWidget(self.scrollArea)        self.createActions()        self.createMenus()        self.setWindowTitle("Image Viewer")        self.resize(500, 400)    def open(self):        fileName, _ = QFileDialog.getOpenFileName(self, "Open File",                QDir.currentPath())        if fileName:            image = QImage(fileName)            if image.isNull():                QMessageBox.information(self, "Image Viewer",                        "Cannot load %s." % fileName)                return            self.imageLabel.setPixmap(QPixmap.fromImage(image))            self.scaleFactor = 1.0            self.printAct.setEnabled(True)            self.fitToWindowAct.setEnabled(True)            self.updateActions()            if not self.fitToWindowAct.isChecked():                self.imageLabel.adjustSize()
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号