热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mmdetection源码解读(九)

如何展示mmdet的检测结果:mmdetectiontoolsbbox_show.pyimportnumpyasnpimportmmcvimportcv2i

如何展示mmdet的检测结果:

mmdetection/tools/bbox_show.py

import numpy as np
import mmcv
import cv2
import json
from pycocotools.coco import COCO
from mmcv import color_val
from mmdet.apis import show_result
from argparse import ArgumentParser
import osclass_names = ['category_1', 'category_2', 'category_3']def det_bbox_show(args=None):""" 这个是用来展示检测结果的 """with open(args.json_file, 'r') as f:jsondata = json.load(f)results = {}for result in jsondata:result['bbox'][2] = result['bbox'][0] + result['bbox'][2]result['bbox'][3] = result['bbox'][1] + result['bbox'][3]result['bbox'].append(result['score'])if result['image_id'] in results.keys():results[result['image_id']][result['category_id']-1] = np.concatenate((results[result['image_id']][result['category_id']-1], np.array(result['bbox'], dtype=np.float32).reshape(-1,5)))else:results[result['image_id']] = []for i in range(len(class_names)):if result['category_id']-1 == i:results[result['image_id']].append(np.array(result['bbox'], dtype=np.float32).reshape(-1,5))else:results[result['image_id']].append(np.zeros(shape=(0,5),dtype=np.float32))for k, v in results.items():show_result(args.img_prex + '/' + k + '.jpg', v, class_names, score_thr=0.7, show=False, out_file=args.outfile + '/{}.jpg'.format(k))def gt_bbox_show(args):"""这个是用来展示Ground Truth bbox的"""coco = COCO(args.json_file)img2ann = coco.imgToAnnsimgids = coco.getImgIds()for imgid in imgids:filename = args.img_prex + '/{}.jpg'.format(imgid)img = mmcv.imread(filename)bbox_color = color_val('red')text_color = color_val('red')anns = img2ann[imgid]for ann in anns:bbox_int = np.array(ann['bbox']).astype(np.int32)left_top = (bbox_int[0], bbox_int[1])right_bottom = (bbox_int[0] + bbox_int[2], bbox_int[1] + bbox_int[3])label = ann['category_id'] - 1cv2.rectangle(img, left_top, right_bottom, bbox_color, thickness=1)label_text = class_names[label]cv2.putText(img, label_text, (bbox_int[0], bbox_int[1] - 2), cv2.FONT_HERSHEY_COMPLEX, 0.5, text_color)mmcv.imwrite(img, args.outfile + '/{}.jpg'.format(imgid))def main():parser = ArgumentParser(description='COCO bbox show Tool')parser.add_argument('--gt-bbox-show',action='store_true',help='show gt bbox')parser.add_argument('--json_file',type=str,help='json file(results or ann file)')parser.add_argument('--img_prex',type=str,help='img dataset prex')parser.add_argument('--outfile',type=str,help='outfile')args = parser.parse_args()if not os.path.exists(args.outfile):os.makedirs(args.outfile)if args.gt_bbox_show:gt_bbox_show(args)else:det_bbox_show(args)if __name__ == '__main__':import timetim = time.time()main()print("total time = {}".format(time.time() - tim))

这段程序前提是图片名称和图片id要保持一致,像coco这种图片名前面补好多0的就不能用了,需要debug一下。

 


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
author-avatar
UWBCZ
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有