当前位置: 首页 > news >正文

高唐住房建设局网站自助wap建站

高唐住房建设局网站,自助wap建站,自己电脑做网站 外网无法访问,免费漫画app推荐目录 1、编辑Camera.c 2、编辑contrlDevices.h 3、编辑mainPro.c 4、进行编译#xff1a; 5、运行结果#xff1a; ./test1 6、项目图片演示 智能家居项目#xff08;七#xff09;之Libcurl库与HTTPS协议实现人脸识别_Love小羽的博客-CSDN博客 经过上一篇文章…目录 1、编辑Camera.c 2、编辑contrlDevices.h 3、编辑mainPro.c 4、进行编译 5、运行结果 ./test1 6、项目图片演示 智能家居项目七之Libcurl库与HTTPS协议实现人脸识别_Love小羽的博客-CSDN博客 经过上一篇文章写的代码是在Ubuntu系统中写的这回把代码搬到树莓派上进行测试 直接上代码 1、编辑Camera.c #include stdio.h #include curl/curl.h #include string.h #include stdlib.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include contrlDevices.h#define true 1 #define false 0typedef typedef unsigned int bool; char buf[10240] {\0};//全局变量用来接收从OCR后台返回的数据 char* getFace1(); void postUrl();char* getPicBase64FromFile(char *filePath); struct Devices *addCameraContrlToDeviceLink(struct Devices *phead);size_t readData(void *ptr,size_t size,size_t nmemb,void *stream) //回调函数 { strncpy(buf,ptr,1024); }char *getFace1() { printf(Taking pictures...\n); system(raspistill -q 5 -t 1 -o image.jpg); //-q 是图片质量在0~100之间我们调成5压缩图片质量,生成的照片名字为imag.jpg //-t 是拍照延时设定1s后拍照 while (access(./image.jpg, F_OK) ! 0) ; //判断是否拍照完毕 printf(拍照完成\n); char *base64BufFaceRec getPicFromOCRBase641(./image.jpg); // system(rm image.jpg); return base64BufFaceRec; //返回刚才拍照的base64}while (access(./image.jpg, F_OK) ! 0); //判断是否拍照完毕printf(Photo taking completed\n);char *base64BufFaceRec getPicBase64FromFile(./image.jpg);return base64BufFaceRec; //返回刚才拍照的base64 }char* getPicBase64FromFile(char *filePath) //获取图片的base64流 { char *bufPic; char cmd[128] {\0};sprintf(cmd,base64 %s tmpFile,filePath); system(cmd);int fd open(./tmpFile,O_RDWR); int filelen lseek(fd,0,SEEK_END); lseek(fd,0,SEEK_SET); bufPic (char *)malloc(filelen2); memset(bufPic,0,filelen2); read(fd,bufPic,filelen); close(fd);system(rm -f tmpFile); return bufPic; }void postUrl() { CURL *curl; CURLcode res; char *postString;char* key 自行购买翔云平台购买人脸识别后的key;//翔云平台购买人脸识别后的keychar* secret 自行购买翔云平台购买人脸识别后的secret;//翔云平台购买人脸识别后的secretint typeId 21;char* format xml;char *bufPic1 getFace1(); char *bufPic2 getPicBase64FromFile(./5.jpg);int len strlen(key)strlen(secret)strlen(bufPic1)strlen(bufPic2)124; //分配空间不够会导致栈溢出postString (char *)malloc(len); //因为postString是一个指针不能用sizeof来计算其指向的大小memset(postString,\0,len);sprintf(postString,img1%simg2%skey%ssecret%stypeId%dformat%s, bufPic1,bufPic2,key,secret,typeId,format);curl curl_easy_init();if (curl) { curl_easy_setopt(curl, CURLOPT_POSTFIELDS,postString); // 指定post内容 curl_easy_setopt(curl, CURLOPT_URL, https://netocr.com/api/faceliu.do); // 指定url curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION,readData); //将返回的http头输出到fp指向的文件 res curl_easy_perform(curl); //类似于状态码printf(OK:%d\n,res);if(strstr(buf,是) ! NULL) //判断翔云后台返回的字符串中有没有“是”{ printf(the same Person\n);}else{ printf(diff Person\n); }curl_easy_cleanup(curl); } }struct Devices cameraContrl { .deviceName camera, .justDoOnce postUrl,.getFace getFace1,.getPicBase64FromFile getPicBase64FromFile,.readData readData,.next NULL };struct Devices *addCameraContrlToDeviceLink(struct Devices *phead) { if(phead NULL){ return cameraContrl; }else{ cameraContrl.next phead; phead cameraContrl;} return phead; } 2、编辑contrlDevices.h //设备工厂 #include wiringPi.h #include stdlib.hstruct Devices {char deviceName[128];int status;int pinNum;int (*open)(int pinNum);int (*close)(int pinNum);void (*justDoOnce)(); //用于摄像头char* (*getFace)(); //用于摄像头char* (*getPicBase64FromFile)(); //用于摄像头size_t (*readData)(); //用于摄像头int (*deviceInit)(int pinNum);int (*readStatus)(int pinNum);int (*changeStatus)(int status);struct Devices *next; };struct Devices* addBathroomLightToDeviceLink(struct Devices *phead); struct Devices* addUpstairLightToDeviceLink(struct Devices *phead); struct Devices* addLivingRoomLightToDeviceLink(struct Devices *phead); struct Devices* addRestaurantLightToDeviceLink(struct Devices *phead); struct Devices* addFireToDeviceLink(struct Devices *phead); struct Devices* addCameraContrlToDeviceLink(struct Devices *phead); 3、编辑mainPro.c #include contrlDevices.h #include InputCommand.h #include string.h #include stdio.h #include unistd.h #include stdlib.h #include pthread.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.hstruct Devices *pdeviceHead NULL; //设备工厂 struct InputCommander *pCommandHead NULL; //指令工厂 struct InputCommander *socketHandler NULL; int c_fd; struct Devices *cameraThrad NULL; typedef unsigned int bool;struct Devices* findDeviceByName(char *name,struct Devices *phead) {struct Devices *tmp phead;if(phead NULL){return NULL;}else{while(tmp ! NULL){if(strcmp(tmp-deviceName,name) 0){return tmp;}tmp tmp-next;}return NULL;} }struct InputCommander* findCommandByName(char *name,struct InputCommander *phead) {struct InputCommander *tmp phead;if(phead NULL){return NULL;}else{while(tmp ! NULL){if(strcmp(tmp-commandName,name) 0){return tmp;}tmp tmp-next;}return NULL;} }void *voice_thread(void* datas) { int nread;printf(voice_thread\n);struct InputCommander *voiceHandler;voiceHandler findCommandByName(voice,pCommandHead);if(voiceHandler NULL){printf(find voiceHandler error\n);pthread_exit(NULL);}else{if(voiceHandler-Init(voiceHandler,NULL,NULL) 0){printf(voice init error\n);pthread_exit(NULL);}else{printf(%s init success\n,voiceHandler-commandName);}while(1){nread voiceHandler-getCommand(voiceHandler);if(nread 0){printf(nodata form vocie\n);}else{printf(do divece contrl:%s\n,voiceHandler-command);}}} }void *read_thread(void* datas) {int n_read;printf(have user connect\n);memset(socketHandler-command,\0,sizeof(socketHandler-command));while(1){n_read read(c_fd,socketHandler-command,sizeof(socketHandler-command));if(n_read -1){perror(read);}else if(n_read 0){printf(\nget: %d,%s\n,n_read,socketHandler-command);memset(socketHandler-command,\0,sizeof(socketHandler-command));}else{printf(client quit\n); }} }void *socket_thread(void* datas) {int n_read 0;printf(socket_thread\n);pthread_t readThrad;struct sockaddr_in c_addr;memset(c_addr,0,sizeof(struct sockaddr_in));int clen sizeof(struct sockaddr_in);socketHandler findCommandByName(socketServer,pCommandHead);if(socketHandler NULL){printf(find socketServerHandler error\n);pthread_exit(NULL);}else{printf(%s init success\n,socketHandler-commandName);}socketHandler-Init(socketHandler,NULL,NULL);while(1){c_fd accept(socketHandler-sfd,(struct sockaddr *)c_addr,clen);pthread_create(readThrad,NULL,read_thread,NULL);} }void *cameraThread_func(void* data)//起线程的函数有格式要求 {struct Devices *cameraTemp;cameraTemp findDeviceByName(camera, pdeviceHead); //摄像头的设备编号为c1if(cameraTemp NULL){ //防止段错误的必需判断当给指针赋值是一定要考虑NULL的情况否则后续操作都是空谈printf(find camera error\n);pthread_exit(NULL); //在线程中不用return}cameraTemp-justDoOnce(); //设备都要从工厂里面取出来.可不能camera.justDoOnce,谁认识你这个camera! }int main() {char name[128];struct Devices *tmp NULL;pthread_t voiceThread;pthread_t socketThread;pthread_t cameraThread;if(-1 wiringPiSetup()){return -1;} //1、设备工厂初始化pdeviceHead addBathroomLightToDeviceLink(pdeviceHead);pdeviceHead addUpstairLightToDeviceLink(pdeviceHead);pdeviceHead addLivingRoomLightToDeviceLink(pdeviceHead);pdeviceHead addRestaurantLightToDeviceLink(pdeviceHead);pdeviceHead addFireToDeviceLink(pdeviceHead);pdeviceHead addCameraContrlToDeviceLink(pdeviceHead); //摄像头pCommandHead addvoiceContrlToInputCommandLink(pCommandHead);//声音pCommandHead addSocketContrlToInputCommandLink(pCommandHead);//2、语音线程池建立/*int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);*/pthread_create(voiceThread,NULL,voice_thread,NULL);//3、socket线程池建立pthread_create(socketThread,NULL,socket_thread,NULL);//4、 摄像头线程pthread_create(cameraThread,NULL,cameraThread_func,NULL);//5、 火灾线程//线程等待pthread_join(voiceThread,NULL);pthread_join(socketThread,NULL);pthread_join(cameraThread,NULL);return 0; } 4、进行编译 gcc mainPro.c upstairLight.c bathroomLight.c fire.c livingroomLight.c socketContrl.c restaurantLight.c  camera.c voiceContrl.c -lwiringPi -lpthread  -I ./curl-7.71.1/_install/include/ -L ./curl-7.71.1/_install/lib/ -lcurl -o test1 5、运行结果 ./test1 结果显示diff Person说明人脸识别失败了我也尝试了很多次都没有成功有可能是我放在树莓派里的本人照片和用摄像头拍的本人照片差别较大的缘故吧但是程序是可以正常运行的。 6、项目图片演示
http://www.hkea.cn/news/14476461/

相关文章:

  • 庆阳北京网站建设搜索引擎优化的步骤有哪些
  • wordpress 懒人图库新乡seo优化
  • 访问数据库的网站开发语言网站代码快捷键
  • 写过太原的网站找人做网站一般要多少钱
  • 自己的网站如何让百度收录怎么做网站优化 site
  • 网站 流程 工具杭州网站建设过程
  • 网站设计标注图怎么做安阳网站建设优化渠道
  • 平湖市网站建设百度h5制作
  • 学校网站建设说明网络推广专员任职要求
  • 高校网站建设意义北京搭建网站
  • 国外那些视频网站做的不错如何做枪版电影网站
  • 电商网站建设方案100例银行软件开发工资一般多少
  • 网站开发常遇到客户问题wordpress piklist
  • 如何查看网站开发商示范建设验收网站
  • 如何做请求队列防止网站高并发苏州建站公司速找苏州聚尚网络
  • 深圳网站建设一般多少钱wordpress 5.1.1主题
  • 莱芜做网站的公司资讯网站域名选购
  • 沈阳做网站客户多吗商业软文
  • 北京上海网站建设公司哪家好网站导航样式
  • 网站备案必须做前置审批吗网站建设的想法和意见
  • 手机网站建设信息农村电商网站建设分类
  • 自助模块化网站建设建设网站用的软件
  • 群晖ds218+做网站遂宁市网站建设
  • 网络销售有限公司网站服务器怎么优化
  • 思勤传媒网站建设公司东莞网站设计在哪里
  • 江西省地图网站建设优化去哪学
  • asp 课程教学网站开发缩短链接的网站
  • 公司网站建设都需要什么内容网站建设中山优化
  • 新公司做网站做网站资源推荐
  • 上海网站建设推荐q479185700顶你百度电脑网页版入口