自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 linux readdir,d_name实现问题

问题描述在操作readdir或者scandir 返回的struct dirent中d_name会导致错误,后续的文件名输出会变得很奇怪,不能输出完整的文件名,或者其他错误。错误代码示例如下#define _DEFAULT_SOURCE#include <dirent.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>intmain(void){ printf("size:%

2021-12-27 17:18:58 1704

原创 CPP中处理一些C的覆盖了CPP关键词的方法

问题在一次开发过程中,涉及到CPP/C的混编,C部分是已经写好的,且由于各种原因无法去修改它,所以当出现了问题的时候,无法从修改源来解决,代码如下static inline void list_add(struct list_head *new, struct list_head *head){ __list_add(new, head, head->next);}这部分代码在C中正常编译,正常使用,这是一个双向链表的节点添加,就是内核里面那套。但是当这部分需要包含到cp

2020-11-25 15:48:06 202

原创 基于dns的网络分流处理-策略路由

1.DNS分流这里首先基于dnsmasq来做,在配置文件中做如下修改ipset=/zoogvpn.com/vpnipset=/zootool.com/vpn ipset=/zoozle.net/vpnipset=/writer.zoho.com/vpn大概意思是这几个域名及其子域名,在获取到ip之后加入到vpn这个ipset里面去,这里的dnsmasq需要是full 版本,也就是需要支持ipset这种操作2.ipsetipset是一条命令,用来创建一个ip的集合ipse

2020-09-29 13:30:18 3366

原创 QMap QList的安全删除操作

1.QMap有时候回遇见在循环中需要删除某个map元素的操作,如果直接remove其实会影响内部迭代器,这样操作会有问题。删除方式换为erase并更新迭代器即可for (auto it = map.begin(); it != map.end();) if (it.value() % 2 == 1) it = map.erase(it); else ++it;这里之所以安全的原因是erase已经是下一个成员了,根据文档说明,erase会返回下一个

2020-09-23 10:36:49 3510 2

原创 head first设计模式-工厂模式

1.简述这里描述的设计模式,来源于head first系列,这里的工厂模式是基于书中披萨店的例子。2.简单工厂简单工厂的设计就是说把所有需要创建的东西放在一个普通的函数中,以书中披萨的例子来讲,假设有一百种披萨,就再函数中全部处理完。当然简单工厂内部的实现也可以有技巧,常见的就是if或者switch逐个处理,但是如果太多了,这里就麻烦了。科技设计map,把函数和对应的key存储下来。直接判断的方式,基本只适用于分支比较少的情况。Pizza* create_pizza(string typ

2020-08-27 18:03:11 143

原创 firefly-rk3399 开发记录8-NCNN检测

1.NCNN编译NCNN就不描述了,这里采用NCNN最新的发布版ncnn-20200727,buildroot中的mk文件如下NCNN_VERSION = 20200727NCNN_SITE = $(call github,Tencent,ncnn,$(NCNN_VERSION))NCNN_INSTALL_STAGING = YESNCNN_LICENSE = BSD-2-Clause or GPL-2.0+NCNN_LICENSE_FILES = LICENSENCNN_CONF_O

2020-08-12 11:19:34 1129

原创 firefly-rk3399 开发记录7-RGA使用

1.RGA简单的说,RGA就是一个用来处理图片的硬件,和CPU相互独立,可以独立完成图片的处理,在瑞芯微这边提供的库是阻塞的,可以自己实现为异步的。具体可参考官方的简单说明http://t.rock-chips.com/forum.php?mod=viewthread&tid=333&highlight=RGA2.RGA错误使用这里使用RGA,主要是用于一个快速的格式转换,在这部分实现中,阻塞或者异步都影响不大。上一章节简单说明了一下RGA的使用,经过测试那样做,有点问题,资源泄

2020-08-11 16:22:22 5676 2

原创 firefly-rk3399 开发记录6-摄像头处理错误

1.记录一个错误在当前的使用方式下,在运行一段时间,几分钟,或者十几分钟之后出现如下错误,然后摄像头卡死了,整体程序就算是假死状态CameraBinerror:"Internaldatastreamerror."这个问题,没得什么头绪,度娘和谷歌都没看到有什么问题。这个问题在之前没有引入人脸检测时,是没有问题的,直到引入opencv做检测才出现。所以这里首先还是从检测部分还是入手检查,屏蔽cascade.detectMultiScale之后,程序又可正常运行,但是这里cv一般是没得什...

2020-08-11 14:55:26 2525

原创 firefly-rk3399 开发记录5-人脸检测实现

1.人脸检测在前面实现的基础上,这里实现人脸检测就相对方便得多了,实现方式简单的采用opencv的分类级联处理haarcascade_frontalface_default.xml。在检测之后,返回人脸检测框,送到上一章节实现的自定义viewfinder中绘制。首先先加载级联器QSmartMethod::QSmartMethod(QObject *parent) : QObject(parent){ cascade.load( "/usr/share/OpenCV/haarc

2020-08-10 10:09:35 793 1

原创 firefly-rk3399 开发记录4-自定义QCameraViewfinder

1.QCameraViewfinderQCamera的取景器,用于显示摄像头抓到的数据,前面所使用的就是这个。但是现在遇到一个需求,比如在一些场合中,需要在显示图像上打水印,OSD等信息,比如在人脸检测场景中一帮会要求识别画框,这里这里没有提供hook方式,不行,probe是并行的,并不会影响到显示这里。看有些博客上说继承一下QCameraViewfinder然后覆写painteventvoid QCameraViewfinderPri::paintEvent(QPaintEvent *e){

2020-08-07 15:21:22 1346

原创 firefly-rk3399 开发记录3-编码与RTSP实现

1.帧捕获在前面的实现过程中,采用了QVideoProbe捕获摄像头数据,在信号绑定之后,传输到QSmartVenc,编码模块是额外放在另外一个线程处理的 QVencParm param; param.width = 1280; param.height = 720; param.code = MPP_VIDEO_CodingAVC; param.fmt = MPP_FMT_YUV420P; m_venc.reset(new QSmartV

2020-08-07 10:25:36 3539 5

原创 firefly-rk3399 开发记录2-摄像头控制

1.基本使用买了firefly那个屏幕,接入HDMI和USB线之后,屏幕会有显示,用的是weston,也带正常触屏功能。尝试挂载NFS,结果发现失败, bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program看了下NFS的支持,内核是支持了,busybox没支持,重新编译一下buildroot,make busybox-menucon

2020-08-06 15:33:40 1793 2

原创 firefly-rk3399 开发记录1-环境搭建

1.固件目前先选择builroot编译,在官方下载最新的固件,这里使用的是firefly-sdk-20200629.7z,校验MD5通过后,则进行解压http://wiki.t-firefly.com/zh_CN/Firefly-RK3399/buildroot_compile.html,基本编译步骤和教程一样。这里选择的是docker部署,docker的方式懂的人自认就懂a).docker pull ubuntu:16.04b).创建容器,并映射目录,把固件源码目录映射到容器中c.

2020-08-03 16:10:58 1357

原创 关于hi3516DV300的VDEC一些测试

VDEC是用于解码视频或者文件用于显示或其他途径的部件,常用操作是解码之后送入VPSS到VO,VDEC->VPSS->VO。支持的格式H264、h265、jpeg。VDEC的整体设置比较简单,基本使用历程相关即可,解码方式支持三种,流式,即读取多少就送入多少解析,但是这样由于不是完整的帧(GOP),VDEC不会立即有效果,只有等一个完整的GOP输入之后才会有输出,这是最简单的一种,按帧发送,即每次发送的都是完整的GOP,VDEC会立刻进行解析并输出,兼容模式就像流式发送,但是需要用户自己判断

2020-06-23 16:39:59 3228 3

原创 openwrt 1806移植mt7628

最小固件:3604643openwrt-ramips-mt76x8-mt7628-squashfs-sysupgrade.bin带LUCI:./scripts/feeds update -a./scripts/feeds install -amake defconfigmake checkmake downloadmake menuconfigmake V=s1.修改固件大...

2018-10-15 21:33:26 2072 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除