网站页面布局名称,网站开发插件,怎么在移动端网站下面做联系人,河南住房与城乡建设部网站目录 处理流程与界面各接口编写时遇到的一些问题上传图片识别结果标签显示中文 处理流程与界面 首先点击“上传图片”按钮#xff0c;可以选择文件夹中含有汽车车牌的图片#xff0c;并显示在“图片框”中。 点击“检测车牌”按钮#xff0c;会先对“图片框”中即含有汽车车… 目录 处理流程与界面各接口编写时遇到的一些问题上传图片识别结果标签显示中文 处理流程与界面 首先点击“上传图片”按钮可以选择文件夹中含有汽车车牌的图片并显示在“图片框”中。 点击“检测车牌”按钮会先对“图片框”中即含有汽车车牌的图片使用自训练的yolov5目标检测模型进行处理框选出车牌号部分然后将框选出的车牌号部分使用paddlehub进行处理得到车牌号的识别结果然后将识别结果和识别框添加到含有汽车车牌的图片上并更新显示在“图片框”中。 可以看到识别的结果中中文显示为???字母和数字正常显示通过查询资料可知yolov5 2.0分支的源代码中detect.py中plot_one_box添加识别结果字符串的具体实现是通过cv2.putText(完成而putText()不支持非ASCII码的字符。从OpenCV 5.0开始putText()也支持这些非ASCII码的字符OpenCV 4.x也是可以用putText()绘制中文的不过需要使用opencv_contrib仓库的freetype模块提供的putText()。freetype模块是对FreeType2的封装在编译安装OpenCV时需要确保已安装第三方库freetype和harfbuzz并且打开-DWITH_FREETYPEON。查找发现另一种使用稍简单的方法使用ImageDraw实现修改代码后界面如下
各接口编写时遇到的一些问题
上传图片
点击“上传图片”按钮后通过信号和槽机制触发open_image()方法
self.upload_btn.clicked.connect(self.open_image)open_image()实现如下
def open_image(self):self.lic_label.setText()self.imgName, self.imgType QFileDialog.getOpenFileName(self.win, 打开图片, img, *.jpg;*.tif;*.png;;All Files(*))if self.imgName :return 0ori_img QPixmap(self.imgName).scaled(self.pics[0].width(), self.pics[0].height(), Qt.KeepAspectRatio)self.pics[0].setPixmap(ori_img)需要注意的是使用QFileDialog.getOpenFileName()打开一个文件传递的第一个参数的类型需为QWidget类型或其子类否则控制台会出现如下提示传入的参数类型不匹配
self.imgName, self.imgType QFileDialog.getOpenFileName(self, 打开图片, img, *.jpg;*.tif;*.png;;All Files(*))
TypeError: getOpenFileName(parent: Optional[QWidget] None, caption: Optional[str] , directory: Optional[str] , filter: Optional[str] , initialFilter: Optional[str] , options: Union[QFileDialog.Options, QFileDialog.Option] 0): argument 1 has unexpected type xxx识别结果标签显示中文
使用PIL库中的Image,ImageDraw,ImageFont实现puttext_zn.py
import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFontclass PutTextZn():def cv2ImgAddText(self, img, text, left, top, textColor(0, 255, 0), textSize20):if (isinstance(img, np.ndarray)): # 判断是否OpenCV图片类型img Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))# 创建一个可以在给定图像上绘图的对象draw ImageDraw.Draw(img)# 字体的格式fontStyle ImageFont.truetype(simsun.ttc, textSize, encodingutf-8)# 绘制文本draw.text((left, top), text, textColor, fontfontStyle)# 转换回OpenCV格式return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)在yolov5 2.0分支的源代码detect.py中检测结果中的xyxy为一个存有检测结果框的列表
x1, y1, x2, y2 xyxy其中x1,y1为检测结果框的左上角点的坐标x2,y2为检测结果框的右下角点的坐标。x1,y1即分别对应cv2ImgAddText()方法的形参列表中的left,top
put_text_zn PutTextZn()
lic_reco_img put_text_zn.cv2ImgAddText(im0, ocr_res, int(x1), int(y1 - 30), (255, 0, 0), 30) #rgbim0为numpy.ndarray类型其如何使用QLabel即self.pics[0]显示呢可以使用以下方法 lic_img QImage(im0.data, im0.shape[1], im0.shape[0], im0.shape[1]*3, QImage.Format_BGR888)lic_pix QPixmap.fromImage(lic_img)self.pics[0].setPixmap(lic_pix)