pyqt qScrollBar调整图片显示区域
按自己想法写了这段,使用qScrollBar控件控制图像显示区域,如果有更好的方法,欢迎指导,讨论,谢谢!
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"))
第一次发,写的不好,望海涵!