部署项目的时候偶尔会遇到这类需求,不能使用OpenCV之类的库来读写图片,比如需要部署到嵌入式环境之类的。网上找了一阵,发现对于jpeg的读写,这两个库很方便。 ...
Category: Solution
Setup NextCloud with Docker
NextCloud是本地云平台,通俗的说就是可以在自家的机器上配一套某度网盘
...
MXNet C++ Deployment
MXNet训练得到的模型有两个文件,XX.json描述网络,XX.params存网络参数。部署的时候最方便的方式是用Amalgamation: https://github.com/apache/incubator-mxnet/tree/master/amalgamation
Amalgamation可以把整个MXNet里Prediction相关的代码写到一个很大的C源文件,部署的时候只需要这个C源文件和对应的一个头文件就可以了。
Sample code 在这里 https://github.com/pppoe/mxnet-Cpp-Deployment-Wrapper-Demo
...
mxnet里im2rec的坑
mxnet训练的时候可以通过ImageDataIter从预处理过的rec文件里读图。rec基本上就是一个打包了label和image的大文件。用rec文件配合DataIter做训练,GPU利用率很高。
遇到两个问题,废了些时间。
1.用im2rec.py生成rec的时候,输入文件格式是,图片序号+Label+图片路径。之间必须用\t分隔,不然会有奇怪的报错。
2.im2rec.py生成图片的时候是用OpenCV读的图,然后从BGR转RGB。图读出来是HxWxC,需要转成CxHxW。不然结果自然会差很多。 ...
Crazyflie 2.0 + Camera
最近给Crazyflie加上了Camera,挺有趣的。
之前在网上看过不少帖子讨论各种解决方案,但是始终没有发现一个简单易行的方法。
最后发现是上面这种带无线传输的一体式的摄像头最方便,重量也小,Crazyflie带着飞无压力。
Crazyflie 2.0 + Flow Deck + Camera!
从VCOM的引脚直接给摄像头供电可以利用Crazyflie本身的开关来控制Camera的开和关。摄像头除了供电以外和Crazyflie是独立的。
接下来的问题就是怎么样在另一台机器上得到Crazyflie传回的图像。因为是摄像头输出的其实是模拟信号,所以需要一个模转数的模块。这部分在很早之前做 智能轮椅 (^_^) 的时候就发现很麻烦。通常是去找一个叫Easycap的小东西,但似乎因为仿制Easycap或者是Ez-Cap的厂家太多了,所以很难找到一个真的可以兼容信号和系统的Easycap。而且Easycap只是一个模转数的模块,在此之前还需要一个多频道的无线接收器。因为这个无线接收器通常需要12V的电源,所以整套接收图像的设备非常“笨重”,而且还不一定好用…
不过所幸最近发现了一个从USB供电的一体的无线接收模转数的模块,非常棒。随便用一个带摄像头的drone试了一下:
可以直接用OpenCV读到图像!可以做CV乐!
...
“Distribute” an under development app without enrolling iOS Developer Program
Prior to Xcode 7, you have to enroll into Apple’s iOS Developer Program (IDP) to install an App to a device, either yours or your friend’s.
Now in Xcode 7, you can compile and deploy an under development App to
Build a Robot From A Power Wheelchair (1/2)
I have been working on a robotic project for a while. In this project, we build a robotic wheelchair controlled by head
[Bug] g++4.6 参数顺序
问题是这样的。这个源文件用到了OpenCV:
//< file: test.cpp
#include
int main (int argc, char** argv) {
cv::Mat image;
return 0;
}
用这样一行命令编译:
g++-4.6 `pkg-config --libs opencv` -o test.bin test.cpp
遇到了错误:
/tmp/ccs2MlQz.o: In function `cv::Mat::~Mat()':
test.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x39): undefined reference to `cv::fastFree(void*)'
/tmp/ccs2MlQz.o: In function `cv::Mat::release()':
test.cpp:(.text._ZN2cv3Mat7releaseEv[cv::Mat::release()]+0x47): undefined reference
[Vim]用行号参与替换
除了强大的正则表达式,\=也是一个好用的工具。
比如要生成这么一个文件
This is number 1 This is number 2 This is number 3 This is number 4 This is number 5 This is number 6 This is number 7 This is number 8 This is number 9 This is number 10
方法当然有很多。用\=可以这么做:
先输入一行
This is number X
复制出另外9行
yy9p
得到
This is number X This is number X This is number
[OpenCV] detectMultiScale: output detection score
OpenCV provides quite decent implementation of the Viola-Jones Face detector.
A quick example looks like this (OpenCV 2.4.5 tested):
// File: main.cc
#include
using namespace cv;
int main(int argc, char **argv)