1.跑demo出现错误,更新最新编译器可以解决

2.demo的识别代码是mipi接口摄像头,换成usb摄像头需要修改main.cpp和CMakeLists.txt

main.cpp

#include "system.h"
#include <opencv2/opencv.hpp>
#include<iostream>
#include "system_opt.h"
// #include "camera.h"
#include "disp.h"
#include "face_detect.h"
#include <camera.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
using namespace cv;
using namespace std;typedef struct{std::vector<det> result;int face_number;
}Result_t;Mat algorithm_image;
pthread_mutex_t img_lock;
// 识别线程
void *detect_thread_entry(void *para)
{int ret;Result_t *pResult = (Result_t *)para;// 人脸检测初始化rknn_context ctx;face_detect_init(&ctx, "face_detect.model");Mat image;while(1){if(algorithm_image.empty()) {usleep(5);continue;}pthread_mutex_lock(&img_lock);image = algorithm_image.clone();pthread_mutex_unlock(&img_lock);// 算法分析ret = face_detect_run(ctx, image, pResult->result);pResult->face_number = pResult->result.size();if(ret <= 0){pResult->result.clear();usleep(1000);continue;}printf("\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");printf("face number : %d\n", pResult->face_number);usleep(16*1000);}/* 人脸检测释放 */face_detect_release(ctx);return NULL;
}int main(int argc, char **argv)
{int ret = 0;long all_face_number = 0;char *pbuf = NULL;int skip = 0;pthread_t mTid;Result_t Result;Mat image;// 1.打开摄像头
#define CAMERA_WIDTH    1920
#define CAMERA_HEIGHT   1080
#define IMGRATIO        3
#define IMAGE_SIZE      (CAMERA_WIDTH*CAMERA_HEIGHT*IMGRATIO)ret = usbcamera_init(USB2_0, USB_DIRECT, CAMERA_WIDTH, CAMERA_HEIGHT, 0);//ret = rgbcamera_init(CAMERA_WIDTH, CAMERA_HEIGHT, 90);if (ret) {printf("error: %s, %d\n", __func__, __LINE__);goto exit4;}pbuf = NULL;pbuf = (char *)malloc(IMAGE_SIZE);if (!pbuf) {printf("error: %s, %d\n", __func__, __LINE__);ret = -1;goto exit3;}// 跳过前10帧skip = 15;while(skip--) {//ret = rgbcamera_getframe(pbuf);ret = usbcamera_getframe(USB2_0, USB_DIRECT, pbuf);if (ret) {printf("error: %s, %d\n", __func__, __LINE__);goto exit2;}}// 2.创建识别线程,以及图像互斥锁pthread_mutex_init(&img_lock, NULL);Result.result.clear();Result.face_number = 0;CreateNormalThread(detect_thread_entry, &Result, &mTid);// 3.显示初始化
#define SCREEN_WIDTH    1920
#define SCREEN_HEIGHT   1080ret = disp_init(SCREEN_WIDTH, SCREEN_HEIGHT);if (ret) {printf("error: %s, %d\n", __func__, __LINE__);goto exit1;}// 4.(取流 + 显示)循环while(1){// 4.1、取流pthread_mutex_lock(&img_lock);//ret = rgbcamera_getframe(pbuf);ret = usbcamera_getframe(USB2_0, USB_DIRECT, pbuf);if (ret) {printf("error: %s, %d\n", __func__, __LINE__);pthread_mutex_unlock(&img_lock);continue;}algorithm_image = Mat(CAMERA_HEIGHT, CAMERA_WIDTH, CV_8UC3, pbuf);image = algorithm_image.clone();pthread_mutex_unlock(&img_lock);// 4.2、显示for (int i = 0; i < (int)Result.result.size(); i++){// 标出人脸框int x = (int)(Result.result[i].box.x);int y = (int)(Result.result[i].box.y);int w = (int)(Result.result[i].box.width);int h = (int)(Result.result[i].box.height);rectangle(image, Rect(x, y, w, h), Scalar(0, 255, 0), 2, 8, 0);// 标出人脸定位标记for (int j = 0; j < (int)Result.result[i].landmarks.size(); ++j) {cv::circle(image, cv::Point((int)Result.result[i].landmarks[j].x, (int)Result.result[i].landmarks[j].y), 2, cv::Scalar(0, 255, 0), 3, 8);}}//printf("Result number:  %d\n", Result.face_number);if(Result.face_number>0){if(all_face_number==2147483647)all_face_number=0;all_face_number = all_face_number+1;String path = "./"+to_string(all_face_number)+".jpg";imwrite(path, image);}disp_commit(image.data, IMAGE_SIZE);usleep(20*1000);}exit1:pthread_mutex_destroy(&img_lock);
exit2:free(pbuf);pbuf = NULL;
exit3://rgbcamera_exit();usbcamera_exit(USB2_0, USB_DIRECT);
exit4:return ret;
}

cmakeLists.txt

cmake_minimum_required(VERSION 2.8.4)STRING(REGEX REPLACE ".*/(.*)" "\\1" CURRENT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR} )
MESSAGE("current project: " ${CURRENT_FOLDER})set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_CROSSCOMPILING TRUE)set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++")# find host dir and set CMAKE_TOOLCHAIN_FILE before call project
execute_process(COMMAND which ${CMAKE_C_COMPILER} OUTPUT_VARIABLE gcc_full_path)
get_filename_component(gcc_full_dir ${gcc_full_path} DIRECTORY)
set(HOST_DIR "${gcc_full_dir}/..")
set(CMAKE_TOOLCHAIN_FILE "${HOST_DIR}/share/buildroot/toolchainfile.cmake")project(${CURRENT_FOLDER})
add_definitions(-Wall)# ======================== easyeai_api =========================
set(toolkit_root ${CMAKE_CURRENT_SOURCE_DIR}/../easyeai-api)
# -I
set(api_inc${CMAKE_SYSROOT}/usr/include/rkfacial${toolkit_root}/algorithm_api/face_detect${toolkit_root}/common_api/system_opt${toolkit_root}/peripheral_api/camera${toolkit_root}/peripheral_api/display)
# -L
link_directories(${toolkit_root}/algorithm_api/face_detect)
link_directories(${toolkit_root}/common_api/system_opt)
link_directories(${toolkit_root}/peripheral_api/camera)
link_directories(${toolkit_root}/peripheral_api/display)
# -l
LINK_LIBRARIES( face_detect rknn_api )
LINK_LIBRARIES( system_opt pthread )
LINK_LIBRARIES( display easymedia rga )
LINK_LIBRARIES( camera easymedia rga rkfacial)
# ======================== easyeai_api =========================# ========================== custom ============================
# solution project
# -I
set(custom_inc${PROJECT_SOURCE_DIR}/include)
# -L
link_directories(${PROJECT_SOURCE_DIR}/libs)
# LINK_LIBRARIES( -lcustom )
# source code
aux_source_directory(./src dir_srcs)
# ========================== custom ============================#--------------------------
# execute file
#--------------------------
add_executable(${CURRENT_FOLDER} ${dir_srcs})       #-o
target_include_directories(${CURRENT_FOLDER} PRIVATE ${api_inc} ${custom_inc})  #-I
target_link_libraries(${CURRENT_FOLDER} -lopencv_calib3d -lopencv_core -lopencv_dnn -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videoio -lopencv_video -lopencv_videostab)   #-l

rk1126 灵眸初探相关推荐

  1. 大疆口袋相机美颜怎么设置_灵眸Osmo口袋云台相机评测-大疆灵眸云相机使用说明...

    大疆正式发布灵眸Osmo口袋云台相机,机身小巧,便于随身携带,可拍摄4K/60fps超清影像,配备了独立屏幕,可爱的小巧机身对女性用户更加合适.据说这款产品 DJI 憋了一年多才正式发布,本期9号小编 ...

  2. 大疆云台如何使用华为mate20pro_华为Mate30+大疆灵眸Osmo3,让你的照片和短视频称霸朋友圈...

    自华为Mate30国内上市以后,短短几天刷爆朋友圈,尤其是Mate30pro现在更是一机难求.华为Mate30pro打造了全球首款4000万像素电影级拍摄手机,华为Mate30pro支持7680帧超慢 ...

  3. 灵眸action_DJI OSMO Action 灵眸运动相机

    前后双彩屏.RockSteady增稳技术.4K60fps拍摄. Osmo Action 灵眸运动相机使用的是一枚1/2.3英寸的CMOS传感器,有效像素为1200万,最高可以拍摄100Mbps码流的4 ...

  4. winform直接控制云台_比 2 代便宜的灵眸手机云台 3,竟然还多了 15 条新亮点!...

    自从 Osmo Mobile 系列发布以来, DJI 大疆创新收到了许多用户的声音: --更轻便一些就更好了! --模式切换键还会有吗? --滑动变焦杆可以调节速度吗? 前不久发布的灵眸手机云台 3 ...

  5. 大疆云台如何使用华为mate20pro_大疆灵眸手机云台3软件升级 完美支持Mate30系列...

    2019年9月26日深圳,全球创新影像技术领导者DJI大疆创新旗下灵眸手机云台3软件升级,为华为Mate30系列用户提供全新的手机稳定器使用体验.这是大疆手持影像产品首次针对安卓机型进行更全面的适配. ...

  6. 大疆云台和华为P30_大疆灵眸手机云台3软件升级 完美支持Mate30系列

    出自蜂鸟网-器材频道,原文链接:https://m.fengniao.com/document/5358430.html 2019年9月26日深圳,全球创新影像技术领导者DJI大疆创新旗下灵眸手机云台 ...

  7. 基于昇腾AI,空天院携手华为共同发布全球首个面向跨模态遥感数据的生成式大模型“空天.灵眸”

    8月20日,在中国图象图形大会的华为昇思MindSpore技术论坛上,中国科学院空天信息创新研究院(以下简称"空天院")发布了首个面向跨模态遥感数据的生成式预训练大模型" ...

  8. action评测 osmo_大疆灵眸运动相机Osmo Action评测:更效率的记录精彩瞬间

    原标题:大疆灵眸运动相机Osmo Action评测:更效率的记录精彩瞬间 说起大疆我们可能大多数人可能想到的是它的无人机产品,不过今天我们为大家带来的产品则是一款大疆灵眸运动相机Osmo Action ...

  9. 大疆OSMO POCKET(大疆灵眸)使用无线模块连接手机后瞬间断开连接的解决办法

    welcome to my blog 昨天到手了OSMO POCKET, 接上无线模块, 看说明书下载了DJI MIMO, 连接手机的时候, 瞬间就断开, 不知道为什么, 联系了客服, 得到的回复是 ...

最新文章

  1. TensorFlow与PyTorch模型部署性能比较
  2. mysql更新后返回主键,我需要在MYSQL中更新表后返回的受影响行的主键。
  3. 【学术相关】如何将半页纸论文写到十页?
  4. 数据仓库:Oracle Exadata和Netezza的比较
  5. 《构建之法》读后的疑惑
  6. 前端学习(2432):关于组件和目录名
  7. vue 修改标题栏_VUE动态修改titile的三种方法
  8. Python fire官方文档教学(自动生成命令行,个人觉得意义不大,不如argparse)
  9. mvd没什么每次参数双都多一个逗号_必看!PostgreSQL参数优化
  10. 原创:爱是两个人的事
  11. 转载 Ubuntu系统安装Java JDK和HDFView
  12. python系列教程158——iter函数
  13. Spring Boot实训开发个人博客4
  14. 用GATK进行二代测序数据 SNP Calling 流程:(二)bwa比对和HaplotypeCaller 变异检测
  15. 几款有意思的html游戏推荐(在线云玩+源码)
  16. Machine Learning - A/B Test
  17. XTTS,又一个值得你重视的Oracle数据库迁移升级利器
  18. 显著性检测方法:LC
  19. 天龙八部采集-生活技能(矿石和药材)坐标位置
  20. Android 定制年月选择器

热门文章

  1. 软件项目管理-第七章软件项目进度基本概念(1):进度基本知识
  2. 一个基于模型化设计的物联网实验系统
  3. keil MDK5搭建STM32开发环境
  4. CMM数据分析系统三坐标
  5. 《PyInstaller打包实战指南》第八节 打包资源文件
  6. excel函数text用法汇总
  7. 性能测试工具locust压测介绍
  8. 有没有完全自助的国产化数据库技术?
  9. 【Twitter API开发者账户协议必知】
  10. 软计算 Soft Computing