主页

虹软人脸识别sdk踩坑记录贴

一、虹软sdk过期问题 虹软虽然让我们免费试用sdk,但sdk下载下来只能在一年之内试用,超过一年则视为过期,要在虹软官网重新下载sdk和替换秘钥.虹软的这种措施,估计是为了后面收费做打算吧.但这种机制折腾起来真的很蛋疼.一个sdk包体积大约40M吧,如果需要批量替换,流量哪个遭得住哇. 目前想到一个思路,把系统的时间改了,让系统时间永远在有效时间内.这样就避免的了虹软sdk过期而不工作的问题. 二、虹软sdk2.0人脸检测问题 听说2.0在速度方面有很大的提升,于是乎就去下载下来进行尝试.发现2.0在人脸检测的速度上不仅很慢还容易错识别.之前在办公室摆了一盆儿花,不知不觉的被虹软识别了好几次人脸.妈耶,吓死我了.晚上就去求一个附身符. 经过测试在windows平台,CPU:...

阅读更多

在c/c++代码中执行bat文件

一、前言 最近在整公司IPC的更新功能,为了保证更新阶段的灵活性,思路为使用编写好的脚本进行更新,当更新失败的时候使用编写好的脚本进行回滚.感觉难度不是很大.但是在实现的过程中还是遇到了一个坑. 二、踩坑 当程序是以服务的方式运行的时候,我尝试过使用system、ShellExecute、ShellExecuteEx方式去执行写好的脚本,发现每次代码执行过后,脚本是没有被执行到的,但用vc调试的时候,发现是被执行了的.就感觉很奇怪了.貌似更windows的服务机制是有关的.具体的机制不太清楚,毕竟我只是一个javaer.抱着以解决问题为目的,在Stack Overflow上面找到了答案,使用创建进程的方式调用bat文件.下面开始贴代码了. 三、填坑 具体代码如下: /***...

阅读更多

近半月项目总结

一、前言 这段时间公司里的任务要用到虹软的人脸识别,以及openCV获取onvif的视频流.由于没怎么接触过这两个东西.于是踩了不少的坑.特别是openCV的坑.太致命了,来不来就crash jvm,头大. 由于经常crash jvm 并没找到原因,退而求其次的方案是加上一个看门狗,当jvm crash 的时候,自动拉起程序.哈哈,是不是个小机灵鬼??但在windows上的这个看门狗,也让我踩了session隔离的坑.也头大. 二、挖坑与填坑 虹软的挖与填 坑: 虹软1.0的版本在做人脸识别的时候不能多线程并发识别. 填: 通过线程池,并且集成线程池对象,让每个线程都持有一个虹软的engine,达到多线程识别的目的 坑: 线程池使用forkjoin的方式,会出现...

阅读更多

分享一次jna内存泄露问题定位BUG的过程

一、前言 使用jna和jni都不可避免内存泄露的问题,一般内存泄露分两种,一种本地库本身有内存泄露问题,另一种JVM 内存中 native memory 的内存泄漏. 本地库本身有泄露这种定位起来比较麻烦,毕竟你也没有他的源码不是.native memory 内存泄露这个还比较好定位,首先保护好案发现场,保存好程序运行日志,heap dump 下来,然后就可以慢慢的来调查来,一般都可以石锤. 笔者这次出现问题,主要是因为换了个线程池导致的.为了加快虹软的对比速度,采用了多线程并发的方式进行对比,只要其中一个对比成功,其余任务全部取消.当时为了上线急忙忙的自己实现了,线程池采用的是ThreadPoolExecutor,并继承Thread对象,在该对象类引入虹软的人脸识别引擎,该方式...

阅读更多

用c造一个日志记录的轮子

一、前言 有现成的C库为什么要自己造轮子呢?我发现大家对造轮子情有独钟呀,所以我也来试一试,免得被C圈里面的人排挤. 二、上代码 头文件logger.h #ifndef LOGGER_H_ #define LOGGER_H_ #include <Windows.h> #include <tchar.h> #include <stdio.h> #if !defined(LOG_TAG) #define LOG_TAG L"NO_TAG" #endif #include <stdarg.h> #include <time.h> #define __S...

阅读更多

windows用c创建进程

一、前言 在windows服务的设计理念中,服务就是应该在后面默默无闻的跑,不要搞什么GUI之类的,但是凡事都有但是的时候,因为有些业务程序需要像服务程序一样的运行方式,也需要拥有GUI界面.然后,后面就有个session 0 隔离了,具体我也不多讲了,我也不懂.具体的百度吧哈哈哈. 二、上代码 无GUI创建进程 PROCESS_INFORMATION pi; //子进程句柄 DWORD returnCode; //子进程返回码 STARTUPINFO si = { sizeof(STARTUPINFO) }; BOOL CreateProcessNoService(c...

阅读更多

用c写windows服务程序

一、前言 最近公司需要在windows平台上做一个服务程序,不幸的是这个任务落在我这个不怎么会c/c++的人身上了,于是拿起一本«C语言入门到精通»就开始干了.在编码期间发现win32 API 有不少的坑.在此记录一下. 二、上代码 安装服务,相当于在服务控制器中注册一个服务. //判断是否已经安装过服务 BOOL IsInstalled() { BOOL bResult = FALSE; SC_HANDLE hScm = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE); if (hScm != NULL) { SC_HANDLE hService = OpenService...

阅读更多

windows解决logback中文乱码,以及高亮问题

前言 近日在windows上开发一款小工具,为了方便排查问题,特地的加入了logback进行记录日志,奈何在cmd中运行的时候中文就乱码了,并且也没有颜色高亮.下文就是我的解决办法. 一、中文乱码 面对中文乱码这个问题,首先想到的是改编码集,这里就分为两个端了.可以改cmd的编码集,也可以改java的编码集.一上最方便的是改cmd的编码,只需要在命令执行之前加上一句chcp 65001就可以了.但是这种方式感觉不太自然,于是就跑去改了logback的编码,logback修改编码也很简单.配置如下: <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <enc...

阅读更多