微信公众号:OpenCV学堂
关注获取更多计算机视觉与深度学习知识
前提
首先安装好LM Studio 然后再安装好OpenCV实验大师工具软件,最后查看我的B站【DeepSeek + OpenCV】AI编程系列视频教程:
https://www.bilibili.com/video/BV1kYNUeVEe2/
https://www.bilibili.com/video/BV1ZGNCeHEAS/?
https://www.bilibili.com/video/BV1iAKFeYEt4/?
https://www.bilibili.com/video/BV1gFANeFE3H/?
OpenCV实验大师工具软件相关教程查看这里:
https://www.bilibili.com/video/BV1AXfYYXEcv/?
OpenCV实验大师工具软件下载地址:
https://appetjpz4tj8166.h5.xiaoeknow.com/p/course/ecourse/preview/course_2XtK2sEi7HNUwt2WscP6tFwxpIb?
有了上述两个开发工具以后我们只需要三步,就可以完成多数OpenCV算法开发跟PyQT界面集成应用开发。
OpenCV工作流代码生成
打开安装好的OpenCV实验大师工作流软件,显示如下
然打开【帮助】-》【项目案例】我们选择双击的第十三个模板匹配,然后点击右上角的【运行】按钮,效果如下:
点击工具栏【PDF导出图标】选择导出PDF,最后两页就是生成的Python代码与C++代码
DeepSeek生成PyQT5界面
以DeepSeek Coder Lite的14B 模型为例,直接输入下面的提示词:
使用pyqt5生成三个按钮,一个QLabel的界面,三个按钮在一同行,第一个按钮实现选择本地图像并显示到QLabel中,第二个按钮实现选择本地文本文件并打印文件路径,第三个按钮 名称为 运行,不实现任何功能。QLabel为固定大小800x600,图像按比率放缩居中显示在QLabel上。
生成好的代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QFileDialog
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置窗口布局
layout = QVBoxLayout()
# 创建QLabel并设置固定大小
self.label = QLabel()
self.label.setFixedSize(800, 600)
# 按钮布局
button_layout = QHBoxLayout()
# 第一个按钮:选择本地图像并显示到QLabel中
self.btn1 = QPushButton('选择图像')
self.btn1.clicked.connect(self.load_image)
# 第二个按钮:选择本地文本文件并打印文件路径
self.btn2 = QPushButton('选择文本文件')
self.btn2.clicked.connect(self.select_text_file)
# 第三个按钮:运行,不实现任何功能
self.btn3 = QPushButton('运行')
# 将按钮添加到布局中
button_layout.addWidget(self.btn1)
button_layout.addWidget(self.btn2)
button_layout.addWidget(self.btn3)
# 将QLabel和按钮布局添加到主布局中
layout.addLayout(button_layout)
layout.addWidget(self.label)
self.setLayout(layout)
self.setWindowTitle('图像显示示例')
self.show()
def load_image(self):
# 打开文件对话框选择图片
file_dialog = QFileDialog()
file_path, _ = file_dialog.getOpenFileName(self, '选择图像', '', 'Images (*.png *.xpm *.jpg)')
if file_path:
pixmap = QPixmap(file_path)
# 按比例缩放图片并居中显示
scaled_pixmap = pixmap.scaled(800, 600, Qt.KeepAspectRatio | Qt.AlignCenter)
self.label.setPixmap(scaled_pixmap)
def select_text_file(self):
# 打开文件对话框选择文本文件
file_dialog = QFileDialog()
file_path, _ = file_dialog.getOpenFileName(self, '选择文本文件', '', 'Text files (*.txt)')
if file_path:
print(f'选择的文本文件路径:{file_path}')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
sys.exit(app.exec_())
直接运行,加载一张图像效果如下:
集成修改与测试运行
修改共有三个地方,第一个地方是修改选择text文件改为把.txt后缀名称改为.vm。第二个地方就是给运行按钮添加一个槽函数,然后在槽函数中添加代码来自OpenCV实验大师工具软件 PDF导出的代码,显示如下:
def run_workflow(self):
persister = VMProjectPersister()
model = ProjectDataModel()
project_type = persister.query_project_type(self.vm_path)
if project_type == 0:
persister.load(model, self.vm_path)
print("exectue opencv workflow here......")
log_txts = persister.silence_run_process(model, self.image_path)
index = 0
result_img = None
for t in model.tasks:
if isinstance(t, ImageProcessTask):
result_img = t.get_output_image()
index += 1
if result_img is not None:
h, w, ch = result_img.shape
bytes_per_line = ch * w
qt_image = QImage(result_img.data, w, h, bytes_per_line, QImage.Format_BGR888)
pixmap = QPixmap.fromImage(qt_image)
self.label.setPixmap(pixmap)
最终测试结果
对比OpenCV实验大师运行结果,发现完全一致。
原价:398
折扣:299
推荐阅读
OpenCV4.8+YOLOv8对象检测C++推理演示
ZXING+OpenCV打造开源条码检测应用
总结 | OpenCV4 Mat操作全接触
三行代码实现 TensorRT8.6 C++ 深度学习模型部署
实战 | YOLOv8+OpenCV 实现DM码定位检测与解析
对象检测边界框损失 – 从IOU到ProbIOU
YOLOv8 OBB实现自定义旋转对象检测
初学者必看 | 学习深度学习的五个误区
YOLOv8自定义数据集训练实现安全帽检测