nohup不起作用的解决方案

2016年8月1日 没有评论

windows下登录linux服务器后,使用nohup命令启动程序到后台,
nohup xxxx >/dev/null 2>&1 &
然后关掉控制台后,后台进程关掉了。
尝试使用sh -c “nohup xxxx >/dev/null 2>&1 &”发现关掉控制台后,后台进程可正常运行。

分类: 编程杂记 标签:

Sqlite简单接口封装

2015年11月7日 没有评论

最近工作中要使用sqlite保存一些数据,所以对Sqlite进行了封装,方便调用,
代码托管在https://github.com/renjihe/sqlite-simple-interface
源码如下:

#include "sqlitebase.h"

SQLiteBase g_SQLiteBase;

SQLiteBase::SQLiteBase(void):
_pDB(NULL), _pStmt(NULL)
{
    _bOpen = false;
    _nPreBindColIndex = _nPreBindParameter = -1;
}  

SQLiteBase::~SQLiteBase(void)
{
    Close();
}  

bool SQLiteBase::Open(const char * sDbFlie)
{
    if (_bOpen)
        return true;

    if (sDbFlie == NULL) {
        return false;
    } 

    if (sqlite3_open(sD
分类: 编程杂记 标签:

千岛湖畔

2015年6月21日 没有评论

千岛湖畔,湖水拍打着岸,惊走了垂钓的老翁。
这场春雨像知道了我的忧愁,淅沥地下个不停,
朦胧了远处层叠的小山。
依栏听风雨,
越来越喜欢这烟雨江南。

分类: 生活杂谈 标签:

NDK提示sys/syslimits.h: No such file or directory

2014年7月1日 没有评论

NDK提示sys/syslimits.h: No such file or directory或者NDK提示memory.h: No such file or directory
这些问题是因为arch-arm/usr/include目录下面没有找到相应文件。
但NDK的工具中一般是会带有这几个文件的,不过这几个文件是长度为零,使用一些国产垃圾解压软件对于一些长度为零的文件解压时是不创建的,,,所以会出现上面这样莫名奇妙的问题。
如果没有好的解压软件可以在linux下解压再拷走。

分类: 编程杂记 标签:

Mac OS X 10.9 安装CVS

2014年5月23日 没有评论

XCode 5中去掉了命令行工具cvs,所在就手工装了一下。
1、安装homebrew
ruby -e “$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)”
2、使用homebrew安装cvs
brew install cvs
3、使用cvs前要login一下。
cvs -d :pserver:xxx@xxx:/path login
然后再做其它操作。
cvs -d :pserver:xxx@xxx:/path checkout xxx
cvs -d :pserver:xxx@xxx:/path update
好像实了,去掉-d :pserver:xxx@xxx:/path会报错,又不想加环境变量。所以就用alias cvx = “cvs -d :pserver:xxx@xxx:/path”
在MAC的~/bash_profile中加入并source ~/bash_profile。

分类: 编程杂记 标签:

OpenCV特征脸源码分析

2014年3月18日 没有评论

使用OpenCV的特征脸来做人脸识别时翻了一下这一块的源码,就将其注释了一下。
位置:opencv-2.4.5/modules/contrib/src/facerec.cpp

void Eigenfaces::train(InputArrayOfArrays _src, InputArray _local_labels) {
    if(_src.total() == 0) {
        string error_message = format("Empty training data was given. You'll need more than one sample to learn a model.");
        CV_Error(CV_StsBadArg, error_message);
    } else if(_local_labels.getMat().type() != CV_32SC1) {
        string error_message = format("Labels must be given as integer (CV_32S
分类: 人工智能 标签:

OpenCV人脸识别实现–训练及识别

2014年3月18日 没有评论

识别时,仍然使用人脸检测先将人脸提取出来然后处理。

#ifndef __MAINWINDOW_H__
#define __MAINWINDOW_H__

#include <QMainWindow>
#include <QSize>
#include <QString>

#include <cv.h>
#include <core/core.hpp>
#include <objdetect/objdetect.hpp>
#include <highgui/highgui.hpp>
#include <imgproc/imgproc.hpp>

#include <contrib/contrib.hpp>

#include <vector>

QT_BEGIN_NAMESPACE
class QAction;
class QTimer;
class QPushButton;
class QLabel;
class PainterWidget;
QT_END_NAME
分类: 人工智能 标签:

OpenCV人脸识别实现–样本采集

2014年3月18日 没有评论

我的步骤是这样的
1)通过OpenCV的haar-like特征分类器,将人脸的区域提取出来。
2)根据我们需要的样子宽高比来调整区域大小,然后从图像中将人脸提取出来。
3)对样本进行缩放,转成灰度图、归一化等操作后,存入图像文件。

vector<cv::Rect> MainWindow::detectFromCapture(Mat &mat_img)
{
    vector<Rect> faces;
    Mat gray;//, smallImg( cvRound (img.rows/scale), cvRound(img.cols/scale), CV_8UC1 );

    cvtColor(mat_img, gray, CV_BGR2GRAY);
    //resize( gray, smallImg, smallImg.size(), 0, 0, INTER_LINEAR );
    equalizeHist(gray, gray);

    cascade.detectMultiScale(gray, faces,
       
分类: 人工智能 标签:

OpenCV人脸识别实现–特征脸算法

2014年3月18日 没有评论

OpenCV人脸识别支持三种方式:特征脸(Eigenfaces)、Fisher脸(FisherFace)、LBP直方图(LBPHFace)。我使用的是Eigenfaces,所以在这里就先让一下Eigenfaces的算法。
算法描述:
1)读入训练人脸库,X=[x1, x2…xn
2)计算平均脸及和个训练人脸到平均脸的距离,平均脸就是各人脸图像的和的平均的向量。
平均脸图像为Y=(x1+x2…xn)/n
训练人脸到平均脸的距离为di = xi-Y
3) 计算特征脸。设矩阵A=[d1,d2,d3…dn],则AAT为训练样本的协方差矩阵,其特征向量wi即为特征脸,构成特征脸空间W=[w1, w2, w3...wi]。
但,比如我们有200张图片,每张100*100像素大小,那么PCA需要解决协方差矩阵的求解,而A的大小是10000*200,那么我们会得到10000*10000大小的矩阵,这样会用掉很大内存,而且直接求它的特征值运算量会很大。
而我们知道矩阵的SVD分解刚好是根据AAT和ATA的特征值和特征向量来分解的,所以我们可以根SVD分解,通过求AT

分类: 人工智能 标签:

使用OpenGL Shader实现放大镜效果

2014年3月16日 没有评论

周末闲来无事,想玩玩OpenGL Shader,想想就实现一个放大镜效果的Shader吧。
着色器可以指定放大镜位置、半径、及放大部数,我实现是在片段着色中使用向后映射的双线性插值的方式对当前片段颜色进行插值,而顶点着色器什么都不做。
先来看一下顶点着色器。

uniform float texture_id;//当前使用的纹理的ID

void main()
{
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;//输出默认顶点位置
    gl_FrontColor = gl_Color;
    gl_TexCoord[texture_id] = gl_TextureMatrix[texture_id] * gl_MultiTexCoord0;//输出当前顶点对应的纹理坐标。
}

再来看一下片段着色器。

uniform vec2  in_circle_pos;//从客户端传入的放大镜圆心位置
uniform float in_circle_radius;//从客户端传入的放大镜圆半径
uniform float i
分类: GPU&OpenGL 标签: