当前位置: 首页 > news >正文

简述织梦网站上传及安新东方线下培训机构官网

简述织梦网站上传及安,新东方线下培训机构官网,域名查询解析,网新科技做网站怎么样这是一个基于 PyTorch 和 PyQt5 的物体识别程序,使用 Faster R-CNN 模型来识别图片中的物体,并通过图形界面展示识别结果。 1.用户界面 主窗口:包含加载图片、识别、清除按钮,以及图片显示区域和结果展示区域。 图片显示&#…

      这是一个基于 PyTorch 和 PyQt5 的物体识别程序,使用 Faster R-CNN 模型来识别图片中的物体,并通过图形界面展示识别结果。

1.用户界面

  • 主窗口:包含加载图片、识别、清除按钮,以及图片显示区域和结果展示区域。
  • 图片显示:支持显示原始图片和处理后的图片(标注了识别结果)。
  • 结果显示:显示识别到的物体类别和置信度。

2. 核心功能

  • 加载图片:用户可以通过点击“加载图片”按钮选择本地图片文件。
  • 物体识别:使用 Faster R-CNN 模型识别图片中的物体。
  • 标注结果:在图片上绘制矩形框,并标注物体类别和置信度。
  • 显示结果:在界面中显示所有识别到的物体及其类别和置信度。
  • 清除显示:点击“清除”按钮,清空图片和结果显示区域。

3. 技术细节

  • Faster R-CNN 模型:使用 PyTorch 提供的预训练 Faster R-CNN 模型(基于 COCO 数据集)。
  • 图片处理:使用 OpenCV 进行图片的加载、格式转换和标注。
  • 类别映射:将模型输出的类别 ID 映射为 COCO 数据集的类别名称(如 person, car, dog 等)。
  • 置信度过滤:只显示置信度大于 0.5 的物体。
import sys
import cv2
import torch
import torchvision
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QFileDialog)
from PyQt5.QtGui import QPixmap, QImage
from PyQt5.QtCore import Qtclass ObjectDetector(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("物体识别系统")self.setGeometry(100, 100, 800, 600)# 初始化UIself.init_ui()# 加载预训练的Faster R-CNN模型self.model = torchvision.models.detection.fasterrcnn_resnet50_fpn(weights=torchvision.models.detection.FasterRCNN_ResNet50_FPN_Weights.DEFAULT)self.model.eval()# COCO数据集类别名称self.coco_class_names = ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light','fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow','elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee','skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard','tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple','sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch','potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone','microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear','hair drier', 'toothbrush']# 验证 COCO 和模型匹配性print(f"COCO 类别数量: {len(self.coco_class_names)}")  # 应为 80def init_ui(self):"""初始化用户界面"""# 创建主窗口部件和布局central_widget = QWidget()self.setCentralWidget(central_widget)layout = QVBoxLayout(central_widget)# 创建顶部按钮区域button_layout = QHBoxLayout()# 添加按钮self.btn_load = QPushButton("加载图片", self)self.btn_load.clicked.connect(self.load_image)button_layout.addWidget(self.btn_load)self.btn_detect = QPushButton("识别", self)self.btn_detect.clicked.connect(self.detect_objects)button_layout.addWidget(self.btn_detect)self.btn_clear = QPushButton("清除", self)self.btn_clear.clicked.connect(self.clear_display)button_layout.addWidget(self.btn_clear)layout.addLayout(button_layout)# 创建显示区域display_layout = QHBoxLayout()# 原始图片显示self.image_label = QLabel()self.image_label.setMinimumSize(400, 400)self.image_label.setAlignment(Qt.AlignCenter)self.image_label.setStyleSheet("border: 2px solid black;")display_layout.addWidget(self.image_label)# 处理后的图片显示self.processed_label = QLabel()self.processed_label.setMinimumSize(400, 400)self.processed_label.setAlignment(Qt.AlignCenter)self.processed_label.setStyleSheet("border: 2px solid black;")display_layout.addWidget(self.processed_label)layout.addLayout(display_layout)# 结果显示self.result_label = QLabel("识别结果将在这里显示")self.result_label.setAlignment(Qt.AlignCenter)self.result_label.setStyleSheet("""QLabel {font-size: 24px;margin: 20px;padding: 10px;background-color: #f0f0f0;border-radius: 5px;}""")layout.addWidget(self.result_label)# 初始化变量self.current_image = Noneself.processed_image = Nonedef load_image(self):"""加载图片"""file_name, _ = QFileDialog.getOpenFileName(self, "选择图片", "", "Image Files (*.png *.jpg *.jpeg *.bmp)")if file_name:# 读取图片self.current_image = cv2.imread(file_name)if self.current_image is None:self.result_label.setText("无法加载图片!")return# 显示原始图片self.display_image(self.current_image, self.image_label)def display_image(self, image, label):"""显示图片到指定的标签"""height, width = image.shape[:2]bytes_per_line = 3 * widthq_image = QImage(image.data, width, height, bytes_per_line, QImage.Format_RGB888).rgbSwapped()pixmap = QPixmap.fromImage(q_image)scaled_pixmap = pixmap.scaled(label.size(), Qt.KeepAspectRatio)label.setPixmap(scaled_pixmap)def detect_objects(self):"""识别图片中的物体"""if self.current_image is None:self.result_label.setText("请先加载图片!")return# 将OpenCV的BGR图片转换为RGBimage_rgb = cv2.cvtColor(self.current_image, cv2.COLOR_BGR2RGB)# 将NumPy数组转换为PyTorch Tensorimage_tensor = torch.from_numpy(image_rgb).permute(2, 0, 1).float() / 255.0# 添加batch维度image_tensor = image_tensor.unsqueeze(0)# 使用Faster R-CNN模型进行物体识别with torch.no_grad():results = self.model(image_tensor)# 打印模型输出的类别 IDprint(f"模型输出的类别 ID: {results[0]['labels']}")# 处理识别结果self.processed_image = self.current_image.copy()for box, label, score in zip(results[0]['boxes'], results[0]['labels'], results[0]['scores']):if score > 0.5:  # 只显示置信度大于0.5的物体if 1 <= label <= 80:  # 检查类别 ID 是否在有效范围内x1, y1, x2, y2 = map(int, box)cv2.rectangle(self.processed_image, (x1, y1), (x2, y2), (0, 255, 0), 2)class_name = self.coco_class_names[label - 1]  # COCO类别ID从1开始cv2.putText(self.processed_image, f"{class_name}: {score:.2f}", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)else:print(f"警告: 无效的类别 ID: {label}")# 显示处理后的图片self.display_image(self.processed_image, self.processed_label)# 显示识别结果detected_objects = []for label, score in zip(results[0]['labels'], results[0]['scores']):if score > 0.5:if 1 <= label <= 80:  # 检查类别 ID 是否在有效范围内class_name = self.coco_class_names[label - 1]  # COCO类别ID从1开始detected_objects.append(f"类别: {class_name}, 置信度: {score:.2f}")else:print(f"警告: 无效的类别 ID: {label}")if detected_objects:self.result_label.setText("识别结果:\n" + "\n".join(detected_objects))else:self.result_label.setText("未识别到物体!")def clear_display(self):"""清除显示"""self.image_label.clear()self.processed_label.clear()self.result_label.setText("识别结果将在这里显示")self.current_image = Noneself.processed_image = Nonedef main():app = QApplication(sys.argv)window = ObjectDetector()window.show()sys.exit(app.exec_())if __name__ == "__main__":main() 

http://www.khdw.cn/news/17182.html

相关文章:

  • 重庆做网站 哪个好些嘛网络营销公司热线电话
  • 免费网站建设教程推销产品怎么推广
  • 会展设计桌子seo关键词
  • 域名关联网站百度云搜索引擎 百度网盘
  • 做美工用什么素材网站seo排名啥意思
  • wordpress耗内存关键词排名优化工具
  • 网站建设客户来源短视频搜索seo
  • 丽水建设厅网站网站优化策划书
  • 高端网站建设哪家好广告制作
  • 好的网站设计制作广州各区最新动态
  • 邯郸鑫芭网络科技有限公司安卓优化神器
  • 中国建设银行招投标网站重庆高端网站seo
  • 完成网站建设的心得体会百度分公司
  • 男人和女人做性网站信息流优化师是做什么的
  • 做商城类网站备案时需提供什么证件软文营销ppt
  • 建设常规的网站报价是多少网站优化是什么
  • 购物网站建设过程视频产品seo标题是什么
  • 有什么专业做蛋糕的网站吗软文推广营销平台
  • 汉川网站开发营销策略范文
  • 郑州软件网站建设小程序seo
  • 如何设计网站制作方案如何引流推广
  • 南昌英文网站建设国际新闻最新消息
  • 网站建设 预付款南宁seo推广服务
  • 企业网站优化推广方法小说排行榜2020前十名
  • 免费帮忙做网站seo是什么的缩写
  • 互联网公司运营seo网站优化服务合同
  • 惠州市+网站开发公司产品网络推广的方法有哪些
  • 如何做网站推广雷公钻百度搜索app
  • 找人做logo网站重庆森林经典台词独白
  • 微信公众号预约关键词优化seo多少钱一年