• 大小: 11.97MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-01
  • 语言: 其他
  • 标签: ARM-Linux  

资源简介

参考博客:https://blog.csdn.net/qq_30155503/article/details/102764838
文件内含:源码+论文
本设计基于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个文件信息

评论

共有 条评论