查看: 2338|回复: 1

【米尔FZ3深度学习计算卡】鼠标检测源码 + 视频

[复制链接]
  • TA的每日心情
    开心
    昨天 22:46
  • 签到天数: 596 天

    连续签到: 3 天

    [LV.9]以坛为家II

    发表于 2020-12-27 01:38:53 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 robe.zhang 于 2020-12-27 01:38 编辑

    【米尔FZ3深度学习计算卡】鼠标检测源码 + 视频

    鼠标检测视频:


    百度 EasyDL 训练数据集采集视频:


    鼠标检测视频源码:
    1. /***************************************************************************
    2. *
    3. * Copyright (c) 2020 Robe. All Rights Reserved
    4. *
    5. **************************************************************************/

    6. /**
    7. * @author:        Robe
    8. * @brief:        video detection.
    9. *                         suit for SDK V1.0.0. and add comments.
    10. *
    11. **/

    12. #include <iostream>
    13. #include <sstream>
    14. #include "easyedge/easyedge.h"

    15. using namespace easyedge;

    16. int main(int argc, char *argv[]) {

    17.     if (argc != 2) {                                                                /* " Usage: demo {model_dir}." */
    18.         std::cerr << "Usage: demo {model_dir}." << std::endl;
    19.         exit(-1);
    20.     }
    21.         
    22.         cv::VideoCapture capture("/dev/video2");                /* camera */
    23.         capture.set(cv::CAP_PROP_FRAME_WIDTH, 1280);
    24.     capture.set(cv::CAP_PROP_FRAME_HEIGHT, 720);
    25.         capture.set(cv::CAP_PROP_FPS, 30);
    26.         cv::Mat img;
    27.         capture.read(img);
    28.         
    29.     EdgePredictorConfig config;                                                /* use EdgePredictorConfig in SDK V1.0.0 instead of EdgePredictorConfig in SDK V0.5 and below. */
    30.     config.model_dir = argv[1];
    31.     global_controller()->set_licence_key("set your owner licence_key");        /* set your owner licence_key */
    32.     EdgeLogConfig log_config;
    33.     log_config.enable_debug = false;
    34.     global_controller()->set_log_config(log_config);
    35.     auto predictor = global_controller()->CreateEdgePredictor<EdgePredictorConfig>(config);

    36.     if (predictor->init() != EDGE_OK) {
    37.                 std::cerr << "predictor initial ERROR.please check again." << std::endl;
    38.         exit(-2);
    39.     }

    40.     std::vector<EdgeResultData> result;                /* predict result  <result:temp not use> <result2:predict result> <result_set_zero:use to set zero>*/
    41.     std::vector<EdgeResultData> result2;
    42.         std::vector<EdgeResultData> result_set_zero;

    43.         while(1)
    44.         {
    45.                 capture.read(img);                                                                                        /* grab one frame image */
    46.                 result2 = result_set_zero;                                                                        /* set result to clean */        
    47.                 predictor->infer(img, result2);                                                                /* predict */
    48.                 for (auto &v : result2) {
    49.                          if (v.prob < 0.2) {                                                                        /* set the model's threshold */
    50.                                 continue;
    51.                         }
    52.                         std::cout << v.index << ", " << v.label << ", p:" << v.prob;                                /* print result to console */
    53.                         if (predictor->model_kind() == EdgeModelKind::kObjectDetection) {
    54.                                 std::cout << " loc: "
    55.                                                   << v.x1 << ", " << v.y1 << ", " << v.x2 << ", " << v.y2;
    56.                                 auto p1 = cv::Point(static_cast<int>(v.x1 * img.cols),
    57.                                                                         static_cast<int>(v.y1 * img.rows));
    58.                                 auto p2 = cv::Point(static_cast<int>(v.x2 * img.cols),
    59.                                                                         static_cast<int>((v.y2) * img.rows));                                
    60.                                 cv::rectangle(img, p1, p2, RED, 3);                                                                                /* rect the object */
    61.                                 cv::putText(img, v.label, p1, cv::FONT_HERSHEY_PLAIN, 3, BLUE, 4);                /* lable the object */
    62.                         }
    63.                         std::cout << std::endl;
    64.                 }
    65.                 std::cout << "Done" << std::endl;
    66.                 cv::imshow("MYIR FZ3 baidu brain board. DEMO.", img);                /* show the predict image */
    67.                 if(cv::waitKey(1)==27) break;                                                                /* enter the "ESC" key to exit this program */
    68.         }
    69.         capture.release();                                                                                                /* prepare to exit. */
    70.         cv::destroyWindow("MYIR FZ3 baidu brain board. DEMO.");
    71.     return 0;
    72. }
    复制代码




    点评

    精彩!  发表于 2020-12-28 13:51
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 14:29 , Processed in 0.117175 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.