资源简介
参考博客:https://blog.csdn.net/qq_30155503/article/details/102764838
文件内含:源码+论文
本设计基于linux操作系统,由客户端(门禁设备)和服务器(后台处理中心)组成,通过以太网形成组网,实现一个人脸识别门禁系统。客户端为嵌入式Linux设备,采用QT库显示界面,通过摄像头采集图像。服务器为PC上 Ubuntu系统,采用QT库显示界面,以OpenCV库为基础进行图像处理,采用基于Haar特征的人脸检测及LBPH人脸识别算法。客户端负责采集图像并上传服务器,以及控制门禁设备;服务器负责对图像进行人脸识别,以及增删人脸等的用户管理,是整个系统的处理中心。
文件内含:源码+论文
本设计基于linux操作系统,由客户端(门禁设备)和服务器(后台处理中心)组成,通过以太网形成组网,实现一个人脸识别门禁系统。客户端为嵌入式Linux设备,采用QT库显示界面,通过摄像头采集图像。服务器为PC上 Ubuntu系统,采用QT库显示界面,以OpenCV库为基础进行图像处理,采用基于Haar特征的人脸检测及LBPH人脸识别算法。客户端负责采集图像并上传服务器,以及控制门禁设备;服务器负责对图像进行人脸识别,以及增删人脸等的用户管理,是整个系统的处理中心。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
MODULE_LICENSE(“GPL v2“); //模块许可证
#define DOOR_MAJOR 100
#define DOOR_MINOR 0
#define DOOR_COUNT 1
#define DOOR_ON 0x10000
#define DOOR_OFF 0x10001
dev_t dev;
u32 door_minor = 0 ;
//实例化cdev
struct cdev door_cdev;
struct class *dev_class = NULL;
struct device *dev_device = NULL;
unsigned long gpio_talbe[2]=
{
S5PV210_GPH2(0)
S5PV210_GPH3(3)
};
int door_open(struct inode *inode struct file *filp)
{
printk(“enter door_open!\n“);
return 0;
}
ssize_t door_read(struct file *filp char __user *buf size_t count loff_t *offset)
{
printk(“enter door_read!\n“);
return 0;
}
ssize_t door_write(struct file *filp const char __user *buf size_t count loff_t *offset)
{
printk(“enter door_write!\n“);
return 0;
}
int door_ioctl(struct inode *inode struct file *filp unsigned int cmd unsigned long data)
{
// printk(“enter door_ioctl!\n“);
switch (cmd)
{
case DOOR_OFF:
//将GPIO设置为输出功能,默认高,灭
gpio_direction_output(gpio_talbe[data]1);
//禁止上下拉
s3c_gpio_setpull(gpio_talbe[data]S3C_GPIO_PULL_NONE);
//设置输出值,输出低电平,亮
gpio_set_value(gpio_talbe[data]0);
printk(“enter door off!\n“);
break;
case DOOR_ON:
//将GPIO设置为输出功能,默认高,灭
gpio_direction_output(gpio_talbe[data]1);
//禁止上下拉
s3c_gpio_setpull(gpio_talbe[data]S3C_GPIO_PULL_NONE);
//设置输出值,输出高电平,灭
__gpio_set_value(gpio_talbe[data]1);
printk(“enter door on!\n“);
break;
default:
return -EINVAL;
}
return 0;
}
int door_release(struct inode *inode struct file *filp)
{
printk(“enter door_release!\n“);
return 0;
}
struct file_operations door_fops =
{
.owner = THIS_MODULE
.open = door_open
.read = door_read
.write = door_write
.ioctl = door_ioctl
.release = door_release
};
int __init door_init(void)
{
int ret = 0;
/*分配设备号*/
if(door_minor) //静态申请
{
dev = MKDEV(DOOR_MAJORDOOR_MINOR);
//向内核申请
ret = register_chrdev_region(dev DOOR_COUNT “door_demo“);
}
else //动态分配
{
ret = alloc_chrdev_region(&dev door_minor DOOR_COUNT “door_demo“);
}
if(ret<0)
{
printk(“register_chrdev_failed\n“);
goto faile_register_chrdev;
}
/* 设备注册 */
cdev_init(&door_cdev &door_fops); //初始化cdev
ret = cdev_add(&door_cdev dev DOOR_COUNT); //向内核注册cdev
if(ret<0)
{
printk(“cdev_add failed!\n“);
goto failure_cdev_add;
}
/* 动态创建设备文件 */
// 创建设备类
//会在/sys/class目录下创建“door_class“为名的文件夹
dev_class = class_create(THIS_MODULE“door_class“);
if(IS_ERR(dev_class))
{
ret = PTR_ERR(dev_class);
goto failure_class_create;
}
// 创建设备文件
//支在/dev目录下创建对应的设备文件 #ls /dev/door 可查看
dev_device = device_create(dev_class NULL dev NULL “door“);
if(IS_ERR(dev_device))
{
ret = PTR_ERR(dev_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-10-27 13:17 毕业设计\
文件 629 2019-10-27 13:22 毕业设计\README.txt
目录 0 2019-10-27 12:53 毕业设计\source\
目录 0 2019-10-27 11:07 毕业设计\source\dev_driver\
文件 346 2018-05-21 10:26 毕业设计\source\dev_driver\.door_drv.ko.cmd
文件 17760 2018-05-21 10:07 毕业设计\source\dev_driver\.door_drv.mod.o.cmd
文件 20252 2018-05-21 10:26 毕业设计\source\dev_driver\.door_drv.o.cmd
目录 0 2019-10-27 11:07 毕业设计\source\dev_driver\.tmp_versions\
文件 93 2018-05-21 10:26 毕业设计\source\dev_driver\.tmp_versions\door_drv.mod
文件 6583 2018-05-21 09:50 毕业设计\source\dev_driver\a.out
文件 3875 2018-05-21 10:26 毕业设计\source\dev_driver\door_drv.c
文件 72601 2018-05-21 10:26 毕业设计\source\dev_driver\door_drv.ko
文件 444 2018-05-21 10:07 毕业设计\source\dev_driver\door_drv.mod.c
文件 15580 2018-05-21 10:07 毕业设计\source\dev_driver\door_drv.mod.o
文件 58272 2018-05-21 10:26 毕业设计\source\dev_driver\door_drv.o
文件 732 2018-05-20 22:40 毕业设计\source\dev_driver\door_test.c
文件 189 2018-05-21 09:45 毕业设计\source\dev_driver\Makefile
文件 0 2018-05-21 10:07 毕业设计\source\dev_driver\Module.symvers
文件 54 2018-05-21 10:26 毕业设计\source\dev_driver\modules.order
目录 0 2019-10-27 11:15 毕业设计\source\socket_cam\
目录 0 2019-10-27 11:08 毕业设计\source\socket_cam\client\
文件 68343 2018-05-25 22:17 毕业设计\source\socket_cam\client\client
文件 613 2018-05-13 20:25 毕业设计\source\socket_cam\client\client.pro
文件 10939 2018-05-25 22:16 毕业设计\source\socket_cam\client\clisocket.c
文件 2600 2018-05-24 17:11 毕业设计\source\socket_cam\client\clisocket.h
文件 7172 2018-05-25 22:17 毕业设计\source\socket_cam\client\clisocket.o
文件 2921 2018-05-21 20:15 毕业设计\source\socket_cam\client\main.cpp
文件 499 2018-05-21 10:41 毕业设计\source\socket_cam\client\main.h
文件 5160 2018-05-25 16:57 毕业设计\source\socket_cam\client\main.o
文件 5029 2018-05-25 17:10 毕业设计\source\socket_cam\client\mainwindow.cpp
文件 1212 2018-05-25 16:56 毕业设计\source\socket_cam\client\mainwindow.h
............此处省略45个文件信息
- 上一篇:《编码的奥秘》 高清扫描版 PDF
- 下一篇:JLU往年计算机网络试题
相关资源
- arm-linux-gcc-3.4.1.tar.bz2
- arm-linux-gcc-4.4.3.tar.gz文件
- gdb-9.1.tar.xz
- arm-linux-gcc 4.4.3
- arm-linux-gcc-4.4.3.tar.gz
- arm-linux-gcc-4.5.1
- gcc-linaro-arm-linux-gnueabihf-4.9-2014.07-201
- gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnue
- gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnue
- arm-linux-gcc4.1.2
- gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnue
- gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnue
- arm-linux-gcc 4.3.2
- arm-linux-gnueabi交叉编译工具链
- arm-linux-gcc-4.9.1-arm-x86_64.tar.xz
- arm-linux-gcc-4.3.2交叉编译
- arm-linux-gnueabi-4.5.1.tar.bz2_linux平台
- Ubuntu64位的交叉编译工具arm-linux-gcc-
- arm-linux-gdbgdbserver;
- 图解ARM-Linux的启动全过程_修正版
- 树莓派上使用sigar必需的本地库linux
- gcc-4.8.2.tar.bz2
- ubuntu 20.04 下安装arm-linux-gnueabi和编译
- qt键盘映射和焦点移动
评论
共有 条评论