pyqt qScrollBar查看图片不同区域

pyqt qScrollBar调整图片显示区域

按自己想法写了这段,使用qScrollBar控件控制图像显示区域,如果有更好的方法,欢迎指导,讨论,谢谢!sao.jpg
在这里插入图片描述

import sys
import cv2
from mainwin_scdn import Ui_MainWindow
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *


class MainForm(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainForm, self).__init__(parent)
        self.setupUi(self)
        self.scrollbar_sr()

        self.horizontalScrollBar.sliderMoved.connect(self.scrollbar_sr)
        self.verticalScrollBar.sliderMoved.connect(self.scrollbar_sr)

    def scrollbar_sr(self):
        img = cv2.imread("sao.jpg")
        step_w = (img.shape[1] - self.label.width()) / 99
        step_h = (img.shape[0] - self.label.height()) / 99
        # 步长
        w_0 = int(step_w * self.horizontalScrollBar.value())
        h_0 = int(step_h * self.verticalScrollBar.value())
        #获取分割位置

        new_img = img[h_0:h_0+self.label.height(), w_0:w_0+self.label.width(), :3]#分割显示图像

        frame = cv2.cvtColor(new_img, cv2.COLOR_RGB2BGR)
        img_display = QImage(frame.data, frame.shape[1], frame.shape[0], QImage.Format_RGB888)
        self.label.setPixmap(QPixmap.fromImage(img_display).scaled(self.label.width(), self.label.height()))#显示在qLabel控件


if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWin = MainForm()
    myWin.show()
    sys.exit(app.exec_())
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwin_scdn.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1168, 679)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(70, 30, 960, 540))
        self.label.setText("")
        self.label.setObjectName("label")
        self.horizontalScrollBar = QtWidgets.QScrollBar(self.centralwidget)
        self.horizontalScrollBar.setGeometry(QtCore.QRect(60, 570, 971, 16))
        self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalScrollBar.setObjectName("horizontalScrollBar")
        self.verticalScrollBar = QtWidgets.QScrollBar(self.centralwidget)
        self.verticalScrollBar.setGeometry(QtCore.QRect(1030, 20, 16, 551))
        self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical)
        self.verticalScrollBar.setObjectName("verticalScrollBar")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1168, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

第一次发,写的不好,望海涵!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值