深度学习目标检测ui界面-交通标志检测识别

深度学习目标检测ui界面-交通标志检测识别

为了将算法封装起来,博主尝试了实验pyqt5的上位机界面进行封装,其中遇到了一些坑举给大家避开。这里加载的训练模型参考之前写的博客:
自动驾驶目标检测项目实战(一)—基于深度学习框架yolov的交通标志检测

效果

在这里插入图片描述
输入设置好账号密码

在这里插入图片描述
加载一张交通标志图片
在这里插入图片描述
点击开始
在这里插入图片描述
测试使用cpu跑的,使用gpu的话检测速度会更快。

过程

主要包括检测代码和界面代码:
在这里插入图片描述
我们只需要将检测完的图片在界面显示即可,但是这样遇到一些问题:

(1)QtGui.QImage加载图片时,图片的红色变成蓝色,解决方法:一开始猜想是图像通道问题,于是把:

 _image = QtGui.QImage(self.img_defect[:], self.img_defect.shape[1], self.img_defect.shape[0],
                              self.img_defect.shape[1] * 3,
                              QtGui.QImage.Format_RGB888) 

中的Format_RGB888改为Format_BGR888,即:

 _image = QtGui.QImage(self.img_defect[:], self.img_defect.shape[1], self.img_defect.shape[0],
                              self.img_defect.shape[1] * 3,
                              QtGui.QImage.Format_BGR888) 

就可以正常显示图片的颜色。

(2)另外,如何使用以下代码直接读取截图的png图片时,图片会乱码:

  img_orignal = cv_imread(self.fname)  # opencv读取图片
  res = cv2.resize(img_orignal, (200, 200), interpolation=cv2.INTER_CUBIC)  # 用cv2.resize设置图片大小
  self.img_o = res
  _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                        QtGui.QImage.Format_BGR888)  # pyqt5转换成自己能放的图片格式
  jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
  self.label_4.setPixmap(jpg_out)  # 设置图片显示

在这里插入图片描述
解决方法:
先用opencv保存图片,如何再加载:

 # 显示图片
 img_orignal = cv_imread(self.fname)  # opencv读取图片
 cv2.imwrite('./images/res/origin.jpg', img_orignal)
 img = cv_imread("./images/res/origin.jpg")
 res = cv2.resize(img, (200, 200), interpolation=cv2.INTER_CUBIC)  # 用cv2.resize设置图片大小
 self.img_o = res
 _image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
                       QtGui.QImage.Format_BGR888)  # pyqt5转换成自己能放的图片格式
 jpg_out = QtGui.QPixmap(_image)  # 转换成QPixmap
 self.label_4.setPixmap(jpg_out)  # 设置图片显示

就可以解决:

在这里插入图片描述

当然这只是其中一种解决方法,其他我还没发现。

记录到这里,需要源码的私信

猜你喜欢

转载自blog.csdn.net/weixin_39735688/article/details/129333124