在OpenVINO上运行YOLO v3目标检测问题记录

问题一:能够成功运行目标检测,但是标签不能正确显示。

显示的标签内容为:“label # xx : x.xx”
例如:检测的是人标签显示为 label #0:0.98
正确显示应该将label 替换为正确的标签
问题如图:
标签显示问题问题查找:object_detection_demo_yolov3_async文件夹下的main.cpp中 控制标签显示的代码如下:

 cv::putText(frame,
      (label < static_cast<int>(labels.size()) ?
        labels[label] : std::string("label #") + std::to_string(label)) 
        + conf.str(),
        +  cv::Point2f(static_cast<float>(object.xmin),        
        +  static_cast<float>(object.ymin - 5)),  cv::FONT_HERSHEY_COMPLEX_SMALL, 1,
cv::Scalar(0, 0, 255));
  • 有一个判断语句,判断label 和 static_cast(labels.size())的大小,如是前者小则显示正确的标签,如是后者小则显示上图label # xx : x.xx 的标签。
  • 此时不能准确知道两个变量的具体值为多少,插入代码输出测试
std::cout <<"label="<< label << "labels.size = " << static_cast<int>(labels.size()) << std::endl;

得到结果为前者为显示正确的标签数字,但是后者size一直为0,判断问题出在labels此变量。

  • 找到labels变量定义和导入的代码
 /** Reading labels (if specified) **/
        std::string labelFileName = fileNameNoExt(FLAGS_m) + ".labels";
        std::vector<std::string> labels;
        std::ifstream inputFile(labelFileName);
        std::copy(std::istream_iterator<std::string>(inputFile),
                  std::istream_iterator<std::string>(),
                  std::back_inserter(labels));

其中:fileNameNoExt() 函数作用为取文件名,不带扩展名。
结合上文代码在.xml和.bin文件所在路径添加.label文件(即coco.names)但要注意将名字命名为和.xml文件同名才可以读到。

  • 运行代码,问题成功解决!
./object_detection_demo_yolov3_async  -i ~/下载/playing_ball.mp4 -m ~/intel/openvino/deployment_tools/model_optimizer/frozen_darknet_tinyyolov3_model.xml  

如下图:
在这里插入图片描述

问题二:检测视频过大,屏幕无法显示完全且不能进行放大缩小

问题查找:找到控制窗口输出的代码

if (!FLAGS_no_show) {
                cv::imshow("Detection results", frame);
            }

**解决方法:**增加控制窗口大小的函数

 if (!FLAGS_no_show) {
		//更改窗口大小
		cv::namedWindow("Detection results", 0);
        cv::resizeWindow("Detection results", 500, 500); 
        cv::imshow("Detection results", frame);
            }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值