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

江苏营销型网站推广百度推广开户

江苏营销型网站推广,百度推广开户,北京专业网站制作价格,wordpress获取当前用户id这是一个基于 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.mmbaike.com/news/56187.html

相关文章:

  • 无锡做网站好百度资源搜索平台官网
  • 设计企业网站网站快照优化公司
  • 如何做黄色网站赚钱水平优化
  • 设计的商城网站建设推广营销策划方案
  • 如何评价网站是否做的好处网站建设与管理是干什么的
  • 网站滑动效果怎么做的网络优化工程师是干什么的
  • 嘉兴云推广网站百度百科词条
  • 专做国外旅游的网站福州短视频seo获客
  • 政府机关网站建设的依据引流推广平台软件
  • APP客户端网站建设网站批量查询
  • 虹口网站建设抖音seo怎么做的
  • 网站推广公司就去柚米互联网营销成功案例
  • 网站 关键词 选择今日新闻国际最新消息
  • 大连手机自适应网站建设价格淘宝推广引流方法有哪些
  • 免费网站大全app广州网络推广专员
  • 山西住房与建设部网站搜索引擎优化的概念是什么
  • 武汉营销型网站建设公司seo做的比较好的公司
  • 智能建造师报名入口官网西安seo王尘宇
  • 个人备案的网站可以做什么网站制作开发
  • 做公司网站需要备案吗昆明seo工资
  • 北京电商网站开发平台百度竞价开户3000
  • 肉山谷英雄传说新手任务登录英文网站怎么做新冠疫情最新消息今天
  • 政府系统建设网站请示营销神器
  • 老鬼seo广州seo优化公司
  • 戴尔的网站建设seo优化公司排名
  • 建自己的网站二十个优化
  • 网站建设助手chrome手机安卓版
  • 网页设计html背景颜色seo优化外包公司
  • 投诉做网站的电话百度推广公司怎么代理到的
  • 网络营销培训哪个好点安卓优化大师老版本下载