From 7bcd2613bb116eff33d6e2358bd8c737bacc3cc1 Mon Sep 17 00:00:00 2001
From: pans <pans@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 04 一月 2017 16:33:26 +0800
Subject: [PATCH]
---
RtspFace/demo/src/tools.h | 5
RtspFace/demo/src/test.cpp | 14 ++-
RtspFace/demo/src/DBuntil.cpp | 97 ++++++++++++++++++++++++
RtspFace/demo/src/DBuntil.h | 41 ++++++++++
RtspFace/demo/src/Makefile | 11 ++
RtspFace/demo/src/db/DBuntil.cpp | 2
RtspFace/demo/src/tools.cpp | 18 +++-
7 files changed, 172 insertions(+), 16 deletions(-)
diff --git a/RtspFace/demo/src/DBuntil.cpp b/RtspFace/demo/src/DBuntil.cpp
new file mode 100644
index 0000000..b9c4d94
--- /dev/null
+++ b/RtspFace/demo/src/DBuntil.cpp
@@ -0,0 +1,97 @@
+#include "DBuntil.h"
+#include <mysql.h>
+#include <cstdio>
+#include <iostream>
+
+
+MYSQL myCont;
+MYSQL_RES *result;
+MYSQL_ROW sql_row;
+
+DBuntil::DBuntil(){}
+
+DBuntil::DBuntil(my_db mydb)
+{
+ if(mysql_init(&myCont)!=NULL)
+ {
+ std::cout<<"init succeed"<<std::endl;
+ }
+ else
+ std::cout<<"init failed"<<std::endl;
+
+ if(mysql_real_connect(&myCont, mydb.host, mydb.user, mydb.pswd, mydb.db, mydb.port, NULL, 0) != NULL)
+ {
+ std::cout<<"mysql_real_connect succeed"<<std::endl;
+ }
+ else
+ std::cout<<"mysql_real_connect failed"<<std::endl;
+}
+
+DBuntil::~DBuntil()
+{
+ if (result != NULL)
+ mysql_free_result(result);
+
+ mysql_close(&myCont);
+}
+
+person DBuntil::db_rearch(int f_id)
+{
+ person p= {0,""};
+ db_select(f_id,&p);
+ //瀵圭粨鏋勪綋璧嬪��
+ return p;
+}
+
+bool DBuntil::db_select(int f_id,person* per)
+{
+
+ sprintf( sql, "select a.p_id,b.`name`,b.img from face_person a,user_info b where a.face_id = %d AND a.p_id = b.pid " , f_id );
+
+ mysql_query(&myCont, "SET NAMES utf8"); //璁剧疆缂栫爜鏍煎紡
+ res = mysql_query(&myCont,sql);//鏌ヨ
+ if (!res)
+ {
+ result = mysql_store_result(&myCont);
+ if (result)
+ {
+ while (sql_row = mysql_fetch_row(result))
+ {
+ //鑾峰彇鍏蜂綋鐨勬暟鎹�
+ per->p_id = atoi( sql_row[0]);
+ per->name = sql_row[1];
+ }
+ }
+ }
+ else
+ {
+ std::cout<<"query sql failed!"<<std::endl;
+ return false;
+ }
+ return true;
+}
+
+bool DBuntil::db_add(int f_id,person *per)
+{
+ //
+ sprintf( sql, "INSERT INTO user_info(NAME, img) VALUES('%s', NULL)" , per->name );
+ res = mysql_query(&myCont,sql);
+ if(!res)
+ {
+ sprintf( sql, "INSERT INTO face_person(p_id, face_id) VALUES (LAST_INSERT_ID(), %d)" , f_id );
+ res = mysql_query(&myCont,sql);
+ if(!res)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool DBuntil::db_register(int f_id,person *per)
+{
+ if(db_add(f_id,per)){
+ return true;
+ }
+ return false;
+}
\ No newline at end of file
diff --git a/RtspFace/demo/src/DBuntil.h b/RtspFace/demo/src/DBuntil.h
new file mode 100644
index 0000000..337b371
--- /dev/null
+++ b/RtspFace/demo/src/DBuntil.h
@@ -0,0 +1,41 @@
+#ifndef _DBUNTIL_H_
+#define _DBUNTIL_H_
+
+struct person {
+ int p_id;
+ char *name;
+ int f_id;
+ //图片
+};
+
+struct my_db {
+ char user[25];
+ char pswd[25];
+ char host[25];
+ char db[25];
+ unsigned int port;
+};
+
+class DBuntil
+{
+
+public:
+ DBuntil();
+ DBuntil(my_db mydb);
+ ~DBuntil();
+ person db_rearch(int f_id);
+
+ bool db_register(int f_id,person *p);
+
+private:
+
+ bool db_add(int f_id,person *per);
+ int db_update();
+ bool db_select(int f_id,person *per);
+
+ char sql[1024];
+ int res;
+};
+
+
+#endif
\ No newline at end of file
diff --git a/RtspFace/demo/src/Makefile b/RtspFace/demo/src/Makefile
index c8ca8cc..d3036c1 100644
--- a/RtspFace/demo/src/Makefile
+++ b/RtspFace/demo/src/Makefile
@@ -1,18 +1,23 @@
锘緾XX=g++
CXXFLAGS:=-I../include
+CXXFLAGS+=/usr/include/mysql
CXXFLAGS+=$(shell pkg-config --cflags opencv)
-LDFLAGS+=-L../libs/lib_dummy
+LDFLAGS+=-L../libs/lib_dummy /usr/lib64/mysql
-LIBS:=-lcvface_api -lpthread
+LIBS:=-lcvface_api -lpthread -lmysqlclient
LIBS+=$(shell pkg-config --libs opencv)
-OBJ = faceDB.o faceAPI.o main.o
+OBJ = faceAPI.o db.o tools.o main.o
demo: $(OBJ)
$(CXX) $(CXXFLAGS) $(LDFLAGS) -o demo $(OBJ) $(LIBS)
main.o : test.cpp
$(CXX) $(CXXFLAGS) $(LDFLAGS) -c test.cpp -o main.o
+tools.o : tools.h
+ $(CXX) $(CXXFLAGS) $(LDFLAGS) -c tools.cpp -o tools.o
+db.o : DBuntil.h
+ $(CXX) $(CXXFLAGS) -o db.o -c DBuntil.cpp $(LDFLAGS) $(LIBS)
faceAPI.o : faceAPI.h
$(CXX) $(CXXFLAGS) $(LDFLAGS) -c faceAPI.cpp -o faceAPI.o
#faceDB.o : faceDB.cpp
diff --git a/RtspFace/demo/src/db/DBuntil.cpp b/RtspFace/demo/src/db/DBuntil.cpp
index 8f9f108..b9c4d94 100644
--- a/RtspFace/demo/src/db/DBuntil.cpp
+++ b/RtspFace/demo/src/db/DBuntil.cpp
@@ -43,7 +43,7 @@
return p;
}
-int DBuntil::db_select(int f_id,person* per)
+bool DBuntil::db_select(int f_id,person* per)
{
sprintf( sql, "select a.p_id,b.`name`,b.img from face_person a,user_info b where a.face_id = %d AND a.p_id = b.pid " , f_id );
diff --git a/RtspFace/demo/src/test.cpp b/RtspFace/demo/src/test.cpp
index f626a03..05eab0d 100644
--- a/RtspFace/demo/src/test.cpp
+++ b/RtspFace/demo/src/test.cpp
@@ -2,7 +2,7 @@
#include <vector>
#include <stdio.h>
-#include "faceAPI.h"
+#include "tools.h"
using namespace std;
@@ -13,6 +13,10 @@
char *db_path = "./out.db";
char *image_path = argv[1];
char *image_list = "../test_image/imglist";
+
+
+ person p={0,"axsdcc"};
+
cv::Mat bgr_image = cv::imread(image_path);
if(bgr_image.data != NULL) {
cout<<image_path<<endl;
@@ -20,10 +24,12 @@
cout<<"image is null"<<endl;
cout<<image_path<<endl;
}
+
int idx = -11;
- faceAPI face;
- idx = face.do_reasch(bgr_image);
+ tools tool=tools();
+ idx=tool->register(bgr_image,p);
cout<<"idx="<<idx<<endl;
-
+
+
return 0;
}
diff --git a/RtspFace/demo/src/tools.cpp b/RtspFace/demo/src/tools.cpp
index b64f807..42c1515 100644
--- a/RtspFace/demo/src/tools.cpp
+++ b/RtspFace/demo/src/tools.cpp
@@ -1,6 +1,10 @@
#include "tools.h"
-tools::tools() {}
+tools::tools() {
+ my_db mydb={"root","Basic@2017","localhost","demo",3306};
+
+ dbu = DBuntil(mydb);
+}
tools::~tools() {}
@@ -9,7 +13,7 @@
idx = f_api->do_reasch(image);
if(idx<0)
{
- p = f_db->db_rearch(int);
+ p = dbu->db_rearch(int);
if(p != NULL)
{
return 0;
@@ -34,13 +38,16 @@
int tools::register(cv::Mat image,person *p)
{
- do_register(image,p);
+ if(do_register(image,p) == 0){
+ return 0;
+ }
+ return -1;
}
person tools::do_search(int idx)
{
person p;
- p = f_db->db_rearch(int);
+ p = dbu->db_rearch(int);
return p;
}
@@ -49,7 +56,8 @@
idx = f_api->do_register(image);
if(idx<0)
{
- idx = f_db->do_register(idx,p);
+ p->f_id = idx;
+ idx = dbu->do_register(idx,p);
if(idx)
{
return 0;
diff --git a/RtspFace/demo/src/tools.h b/RtspFace/demo/src/tools.h
index a4bc5db..e69692f 100644
--- a/RtspFace/demo/src/tools.h
+++ b/RtspFace/demo/src/tools.h
@@ -4,9 +4,6 @@
#include "DBuntil.h"
#include "faceAPI.h"
-class faceAPI f_api;
-class DButil f_db;
-
class tools
{
public:
@@ -19,6 +16,8 @@
int do_register(cv::Mat image,person *p);
person do_search(int idx);
int idx;
+ DBuntil dbu;
+ faceAPI f_api;
}
#endif
\ No newline at end of file
--
Gitblit v1.8.0