資源簡介
參考博客: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往年計算機網絡試題
評論
共有 條評論