Commit 657616e5 by guanghui.cui

广告推送

parent d7f9856a
......@@ -6,6 +6,7 @@ struct TargetInfo
std::string strName; //目标名称
std::string strPhone; //手机号
std::string strConfidence; //相似度
std::string strUserTag; //标签
dlib::rectangle rc; //头像位置
int iCode = 0; //用户编码
bool bSuccess = false; //是否成功获取到用户信息
......
......@@ -54,12 +54,15 @@ using namespace std;
std::string strUrl = "http://139.196.195.9:8788/facesearch/search4File"; //接口URL
std::string strAdUrl = "http://www.eastjw.com:7000/FamilyInterfaceProject/familyInterface/addFamilyData"; //广告URL
std::vector<TargetInfo> track_dets; //跟踪目标所在位置
CvxText text("kaiti.ttf"); //字库,否则不支持中文
CvxText text("yahei.ttf"); //字库,否则不支持中文
int64 time_start = cv::getTickCount(), time_end; //时间戳,用于计算视频播放帧率
int fps = 0; //帧率
std::vector<adStruct> vecADInfos; //广告信息
std::string strDeviceId; //广告设备id
#define IN
#define OUT
/****************************************
函数声明
****************************************/
......@@ -84,13 +87,16 @@ void update_img_text(cv::Mat &image, int iframe, int target);
//获取广告信息,缓存到本地
void get_adInfo(std::vector<adStruct> &vecInfo);
//根据手机号获取用户信息
void get_userinfo_by_phone(IN const string &phone, OUT adStruct &info);
// 广告播放推送
CURLcode curl_post_ad(const string &url, const string equipmentId,const string productId, string &response);
/****************************************
主函数
****************************************/
int main()
int main(int argc, char** argv)
{
try
{
......@@ -106,10 +112,6 @@ int main()
// global init curl
curl_global_init(CURL_GLOBAL_ALL);
//std::string postAdResponseStr;
//curl_post_ad(strAdUrl,"6739c9fa37f547ef916d06d33a73331a","80052478", postAdResponseStr);
//LOG(INFO) <<"广告推送返回:" <<postAdResponseStr.data();
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
......@@ -152,12 +154,13 @@ int main()
frame_count++;
// Grab a frame
cv::Mat origin,temp;
//if (!cap.read(origin))
// break;
//cv::resize(origin, temp, cv::Size(origin.cols * 1.15, origin.rows * 1.15), 0, 0, cv::INTER_LINEAR); //图片缩放
if (!cap.read(temp))
{
break;
}
//cv::resize(origin, temp, cv::Size(origin.cols * 1.5, origin.rows * 1.5), 0, 0, cv::INTER_LINEAR); //图片缩放
break;
dlib::cv_image<dlib::bgr_pixel> cimg(temp);
//每18帧更新一次
if (frame_count % 30 == 0) {
......@@ -176,6 +179,7 @@ int main()
track_dets[i].bSuccess = false;
track_dets[i].strName = "";
track_dets[i].strPhone = "";
track_dets[i].strUserTag = "";
track_dets[i].iCode = 0;
}
bTargetUpdate = true;
......@@ -228,7 +232,7 @@ int main()
// Display it all on the screen
win.clear_overlay();
win.set_image(cimg);
win.add_overlay(_get_rc_detectors(track_dets), dlib::rgb_pixel(0, 255, 0));
win.add_overlay(_get_rc_detectors(track_dets), dlib::rgb_pixel(65, 210, 212));
//计数超过10000,计数归零
if (frame_count > 100000)
......@@ -372,9 +376,17 @@ void reqUserInfoByImg(int index, string &imgPath)
float fNum = 0.00;
fNum = atof(response.vecUser[0].confidence.data());
if (fNum > 80.000) {
adStruct adInfo;
get_userinfo_by_phone(response.vecUser[0].memberTel,adInfo);
target.strName = "姓名:" + response.vecUser[0].memberName;
target.strPhone = "电话:" + response.vecUser[0].memberTel;
target.strConfidence = "相似度:" + response.vecUser[0].confidence;
target.strUserTag = "标签:" + adInfo.userTag;
std::string postAdResponseStr;
curl_post_ad(strAdUrl, strDeviceId, adInfo.goodsId, postAdResponseStr);
//curl_post_ad(strAdUrl,"6739c9fa37f547ef916d06d33a73331a","80052478", postAdResponseStr);
LOG(INFO) <<"ad push response:" <<postAdResponseStr.data();
}
}
else {
......@@ -382,6 +394,7 @@ void reqUserInfoByImg(int index, string &imgPath)
target.strName = "";
target.strPhone = "";
target.strConfidence = "";
target.strUserTag = "";
}
target.bSuccess = rlt;
break;
......@@ -401,15 +414,16 @@ void update_img_text(cv::Mat &image, int iframe, int target)
}
std::string strFps = "帧率: " + to_string(fps);
text.putText(&IplImage(image), strFps.data(), cv::Point(10, 20), CV_RGB(255, 0, 0));
text.putText(&IplImage(image), strFps.data(), cv::Point(10, 20), CV_RGB(65, 210, 212));
std::string active_models = "活跃目标: " + to_string(target);
text.putText(&IplImage(image), active_models.data(), cv::Point(10, 50), CV_RGB(255, 0, 0));
text.putText(&IplImage(image), active_models.data(), cv::Point(10, 50), CV_RGB(65, 210, 212));
for (int i = 0; i < target; i++) {
text.putText(&IplImage(image), track_dets[i].strName.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 15), CV_RGB(255, 0, 0));
text.putText(&IplImage(image), track_dets[i].strPhone.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 45), CV_RGB(255, 0, 0));
text.putText(&IplImage(image), track_dets[i].strConfidence.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 75), CV_RGB(255, 0, 0));
text.putText(&IplImage(image), track_dets[i].strName.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 15), CV_RGB(65, 210, 212));
text.putText(&IplImage(image), track_dets[i].strPhone.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 45), CV_RGB(65, 210, 212));
text.putText(&IplImage(image), track_dets[i].strConfidence.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 75), CV_RGB(65, 210, 212));
text.putText(&IplImage(image), track_dets[i].strUserTag.data(), cvPoint(track_dets[i].rc.right() + 5, track_dets[i].rc.top() + 105), CV_RGB(65, 210, 212));
}
}
......@@ -463,4 +477,14 @@ CURLcode curl_post_ad(const string &url, const string equipmentId, const string
// release curl
curl_easy_cleanup(curl);
return res;
}
void get_userinfo_by_phone(IN const string &phone, OUT adStruct &info)
{
for (auto ad : vecADInfos) {
if (ad.phone.compare(phone) == 0) {
info = ad;
break;
}
}
}
\ No newline at end of file
......@@ -28,13 +28,13 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v140_xp</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
<PlatformToolset>v140_xp</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
......@@ -118,6 +118,7 @@
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
......
......@@ -52,12 +52,13 @@ bool SQLite::_createTable()
std::string strTableName = "fmAdInfo";
if (!isTableExist(pDB, strTableName)) {
char szCreate[1024] = { 0 };
sprintf_s(szCreate, "create table %s(id int NOT NULL,\
sprintf_s(szCreate, "create table %s(phone varchar(20) NOT NULL,\
user_name varchar(50),\
user_tag varchar(50),\
goods_id varchar(50),\
goods_name varchar(200),\
logtime TIMESTAMP default (datetime('now', 'localtime')),\
PRIMARY KEY (id))", strTableName.c_str());
PRIMARY KEY (phone))", strTableName.c_str());
if (!_execSql(szCreate)) {
//执行失败,退出
exit(0);
......@@ -159,9 +160,11 @@ int callbackQuery(void* data, int n_columns, char** column_values, char** column
try
{
adStruct adInfo;
adInfo.userTag = UTF8ToASCII(column_values[1]);
adInfo.goodsId = column_values[2];
adInfo.goodsName = UTF8ToASCII(column_values[3]);
adInfo.phone = column_values[0];
adInfo.userName = UTF8ToASCII(column_values[1]);
adInfo.userTag = UTF8ToASCII(column_values[2]);
adInfo.goodsId = column_values[3];
adInfo.goodsName = UTF8ToASCII(column_values[4]);
vecTempADInfo.push_back(adInfo);
}
catch (std::exception &ex)
......
......@@ -7,6 +7,8 @@
//广告信息结构体
struct adStruct
{
std::string phone; //手机号
std::string userName; //用户名
std::string userTag; //用户标签
std::string goodsId; //商品广告ID
std::string goodsName; //商品名称
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment