PySide(PyQt)实现鼠标画框局部放大

 按住鼠标左键画框,裁切画面并局部放大,可以用来生成ROI

 1、在QtDesigner中创建ui文件,命名为crop.ui:

2、自定义脚本ImageLabel.py :

from PySide6.QtCore import Qt, QRect, Signal, QPoint
from PySide6.QtGui import QPixmap, QPainter, QPen, QColor
from PySide6.QtWidgets import QLabel


class ImageLabel(QLabel):
    src_info = Signal(str)
    crop_info = Signal(str)
    show_info = Signal(str)

    def __init__(self, parent=None):
        super().__init__(parent)

        self.scale = 1.0  # 显示比例,其含义为当前的显示窗口的每个像素代表原始图几个像素
        self.src_width = 1
        self.src_height = 1
        self.showing_pixmap = QPixmap()  # 当前显示的图像内容(从原图原比例裁切而来)
        self.scaled_image = QPixmap()  # 当前显示的图像内容(经过缩放适应窗口的)
        self.scaled_image_x0 = 0  # 显示内容的x起点
        self.scaled_image_y0 = 0  # 显示内容的y起点
        self.erase = False  # 擦除已有的方框

        self.start_pos = QPoint()  # 鼠标起始点
        self.end_pos = QPoint()  # 鼠标结束点

        self.show_rect = QRect(0, 0, 1, 1)  # 显示窗口维度的方框
        self.crop_rect = QRect(0, 0, 1, 1)  # 实际像素维度的方框

    # 重新定义鼠标按下事件
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.start_pos = event.position().toPoint()
            self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深蓝海拓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值