微信公眾號:OpenCV開發者聯盟
關注獲取更多計算機視覺與深度學習知識
引言

元對象系統
- 所有的QWidget對象都是QObject類都是元數據- C++使用Q_OBJECT宏定義在私有變量中的類才是元數據- 元數據對象編譯器會提供QObject類子類完成必要的代碼實現元對象特性
信號與槽
信號
custom_signal.emit(parameters)槽函數
代碼演示部分
1class?MyTextData(QtCore.QObject):
2????fire_draw_text_signal?=?QtCore.pyqtSignal(str)
3
4????def?__init__(self):
5????????super(MyTextData,?self).__init__()
6????????print("create?my?text...")
7????????self.text_content?=?"OpenCV開發者聯盟"
8
9????def?text_changed(self,?text):
10????????self.text_content?=?text
11????????self.fire_draw_text_signal.emit(self.text_content)1#?初始化自定義數據類
2self.my_data?=?MyTextData()
3self.my_data.fire_draw_text_signal.connect(self.show_text)
4self.my_data.text_changed("自定義信號演示") 1def?show_text(self,?text):
2????painter?=?QtGui.QPainter(self.label.pixmap())
3????pen?=?QtGui.QPen(QtCore.Qt.green)
4????painter.setPen(pen)
5????font?=?QtGui.QFont()
6????font.setBold(True)
7????font.setPointSizeF(24)
8????painter.setFont(font)
9????painter.drawText(QtCore.QPoint(20,?50),?"OpenCV演示-"?+?text)
10????painter.end() 1def?on_update_gray(self):
2????image?=?cv.imread("images/test5.png")
3????gray?=?cv.cvtColor(image,?cv.COLOR_BGR2GRAY)
4????dst?=?cv.cvtColor(gray,?cv.COLOR_GRAY2RGB)
5????height,?width,?channel?=?dst.shape
6????bytesPerLine?=?3?*?width
7????img?=?QtGui.QImage(dst.data,?width,?height,?bytesPerLine,?QtGui.QImage.Format_RGB888)
8????pixmap?=?QtGui.QPixmap(img)
9????pix?=?pixmap.scaled(QtCore.QSize(620,?500),?QtCore.Qt.KeepAspectRatio)
10????self.label.setPixmap(pix)
11????self.my_data.text_changed("圖像灰度化")


掃碼關注
OpenCV開發者聯盟,
專注各種語言的OpenCV開發教程分享
OpenCV周邊開發技術應用!

掃碼查看OpenCV+OpenVIO+Pytorch系統化學習路線圖

?推薦閱讀?
CV全棧開發者說 - 從傳統算法到深度學習怎么修煉
2022入坑深度學習,我選擇Pytorch框架!
Pytorch輕松實現經典視覺任務
教程推薦 | Pytorch框架CV開發-從入門到實戰
OpenCV4 C++學習 必備基礎語法知識三
OpenCV4 C++學習 必備基礎語法知識二
OpenCV4.5.4 人臉檢測+五點landmark新功能測試
OpenCV4.5.4人臉識別詳解與代碼演示
OpenCV二值圖象分析之Blob分析找圓
OpenCV4.5.x DNN + YOLOv5 C++推理
OpenCV4.5.4 直接支持YOLOv5 6.1版本模型推理
OpenVINO2021.4+YOLOX目標檢測模型部署測試
比YOLOv5還厲害的YOLOX來了,官方支持OpenVINO推理