微信公众号: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推理