如何用c或c++编写简单的签到程序????

如何用c或c++编写简单的签到程序????,第1张

方法/步骤

双击桌面上的Visual C++6.0快捷图标,打开编程环境,如下图所示:

在打开的界面中,单击“文件”菜单项。选择里面的子菜单“新建”,单击此项,得到如下图所示的选项卡:(也可以直接使用快捷键:Ctrl+N)

在打开的新建选项卡中,单击“文件”,然后选中“文件”选项卡中的“C++ source file”一栏,在右边的“文件名”文本框中,对你要新建的C++源文件命名,这里我取名为“Demo.cpp”,具体详细 *** 作如下图所示:

在上述 *** 作的基础上,保存文件到指定的文件夹。这是我保存 到桌面的Demo文件夹中,如下图所示:

选择路径之后,单击“确定”按钮,得到如下图说是的界面,在右边的编辑区内,您就可以开始编写C语言代码了。

开始代码的编辑。下面,我们编写一个简单的两数求和的代码,代码编辑如下如所示:

编译。对程序进行编译,点击工具栏的“编译”图标(或者按下快捷键:Ctrl+F7),如下图所示:

组建。对程序进行链接,点击工具栏的“组建”图标(或者按下快捷键:F7),如下图所示:

执行。现在我们可以查看你编程的程序的结果了,点击工具栏中的“执行”图标(或者按下快捷键:Ctrl+F5),程序执行的结果如下图所示:

clear all,close all,clc% 清理工作空间,关闭运行窗口,清理命令窗口

I=imread('Empreinte.bmp')% 读入图像

imshow(I) % 显示图像

set(gcf,'position',[1 1 600 600])% 得到图形窗口句柄,设置图形窗口位置

J=I(:,:,1)>160% 设定阈值为160,进行黑白化处理

imshow(J) % 显示处理后的图像

set(gcf,'position',[1 1 600 600]) % 得到图形窗口句柄,设置图形窗口位置

K=bwmorph(~J,'thin','inf') % 数学形态学运算,图像细化,~符号代表黑白反色

imshow(~K) % 显示处理后的图像,~符号代表黑白反色

set(gcf,'position',[1 1 600 600])% 得到图形窗口句柄,设置图形窗口位置

function y=minutie(x)

i=ceil(size(x)/2)

if x(i,i)==0

y=0

else

y=sum(x(:)) - 1

end

fun=@minutie% 得到函数句柄

L = nlfilter(K,[3 3],fun) % 滤波处理

LTerm=(L==1)% 选择端点

imshow(LTerm) % 显示白色点

LTermLab=bwlabel(LTerm) % 端点标识

propTerm=regionprops(LTermLab,'Centroid') % 端点区域分析,寻找端点区域中心

CentroidTerm=round(cat(1,propTerm(:).Centroid)) % 端点圆整为整数

imshow(~K) % 显示隆线细化图像

set(gcf,'position',[1 1 600 600]) % 得到当前图形窗口句柄,设置位置

hold on % 在前面的图形窗口继续绘制图像

plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro') % 绘制隆线端点标识,红色圆圈

LBif=(L==3)% 选择分叉点

LBifLab=bwlabel(LBif) % 分叉点标识

propBif=regionprops(LBifLab,'Centroid','Image')% 区域分析,寻找区域中心

CentroidBif=round(cat(1,propBif(:).Centroid)) % 分叉点圆整为整数

plot(CentroidBif(:,1),CentroidBif(:,2),'go') % 绘制隆线分叉点标识,绿色圆圈

D=6

Distance=DistEuclidian(CentroidBif,CentroidTerm)% 求端点和分叉点的距离

SpuriousMinutae=Distance<D % 满足距离小于D的点

[i,j]=find(SpuriousMinutae) % 查找对应像素点

CentroidBif(i,:)=[] % 去除该分叉点

CentroidTerm(j,:)=[]% 去除该端点

Distance=DistEuclidian(CentroidBif)% 求两个分叉点的距离

SpuriousMinutae=Distance<D % 满足距离小于D的点

[i,j]=find(SpuriousMinutae)% 查找对应像素点

CentroidBif(i,:)=[]% 去除该分叉点

Distance=DistEuclidian(CentroidTerm) % 求两个端点的距离

SpuriousMinutae=Distance<D % 满足距离小于D的点

[i,j]=find(SpuriousMinutae)% 查找对应像素点

CentroidTerm(i,:)=[] % 去除该端点

hold off % 结束在前面的图形窗口绘图

imshow(~K) % 显示细化图

hold on % 继续在前面的图形窗口绘图

plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro') % 绘制隆线端点标识,红色圆圈

plot(CentroidBif(:,1),CentroidBif(:,2),'go') % 绘制隆线分叉点标识,绿色圆圈

hold off % 结束在前面的图形窗口绘图

Kopen=imclose(K,strel('square',7)) % 闭合运算

KopenClean= imfill(Kopen,'holes') % 填充图像中的孔洞

KopenClean=bwareaopen(KopenClean,5)% 开运算

imshow(KopenClean) % 显示处理结果

KopenClean([1 end],:)=0% 赋值语句

KopenClean(:,[1 end])=0% 赋值语句

ROI=imerode(KopenClean,strel('disk',10)) % 腐蚀运算

imshow(ROI) % 显示处理结果

imshow(I) % 显示原始图像

hold on% 继续在前面的图形窗口绘图

imshow(ROI)% 显示感兴趣区域

alpha(0.5) % 设置透明度

hold on% 继续在前面的图形窗口绘图

plot(CentroidTerm(:,1),CentroidTerm(:,2),'ro') % 绘制端点标识,红色圆圈

plot(CentroidBif(:,1),CentroidBif(:,2),'go') % 绘制分叉点标识,绿色圆圈

hold off % 结束在前面的图形窗口绘图

[m,n]=size(I(:,:,1)) % 求图像尺寸

indTerm=sub2ind([m,n]% 从下标得到单精度索引

CentroidTerm(:,1),CentroidTerm(:,2)) % 端点

Z=zeros(m,n) % 全零矩阵

Z(indTerm)=1

ZTerm=Z.*ROI'

[CentroidTermX,CentroidTermY]=find(ZTerm)

indBif=sub2ind([m,n],CentroidBif(:,1),CentroidBif(:,2)) % 从下标得到单精度索引

Z=zeros(m,n)

Z(indBif)=1

ZBif=Z.*ROI'

[CentroidBifX,CentroidBifY]=find(ZBif)

imshow(I) % 显示原始图像

hold on% 继续绘图

plot(CentroidTermX,CentroidTermY,'ro','linewidth',2) % 红色圆圈

plot(CentroidBifX,CentroidBifY,'go','linewidth',2) % 绿色圆圈

Table=[3*pi/4 2*pi/3 pi/2 pi/3 pi/4 % 角度查找表

5*pi/6 0 0 0 pi/6

pi 0 0 0 0

-5*pi/6 0 0 0 -pi/6

-3*pi/4 -2*pi/3 -pi/2 -pi/3 -pi/4]

for ind=1:length(CentroidTermX)

Klocal=K(CentroidTermY(ind)-2:CentroidTermY(ind)+2, ...

CentroidTermX(ind)-2:CentroidTermX(ind)+2)

Klocal(2:end-1,2:end-1)=0

[i,j]=find(Klocal)

OrientationTerm(ind,1)=Table(i,j)

end

dxTerm=sin(OrientationTerm)*5

dyTerm=cos(OrientationTerm)*5

figure% 新建窗口

imshow(K) % 显示黑白图

set(gcf,'position',[1 1 600 600]) % 设置图像窗口属性

hold on % 继续绘图

plot(CentroidTermX,CentroidTermY,'ro','linewidth',2) % 红色圆圈

plot([CentroidTermX CentroidTermX+dyTerm]',...% 红色短线

[CentroidTermY CentroidTermY-dxTerm]','r','linewidth',2)

for ind=1:length(CentroidBifX)

Klocal=K(CentroidBifY(ind)-2:CentroidBifY(ind)+2, ...

CentroidBifX(ind)-2:CentroidBifX(ind)+2)

Klocal(2:end-1,2:end-1)=0

[i,j]=find(Klocal)

if length(i)~=3

CentroidBifY(ind)=NaN

CentroidBifX(ind)=NaN

OrientationBif(ind)=NaN

else

for k=1:3

OrientationBif(ind,k)=Table(i(k),j(k))

dxBif(ind,k)=sin(OrientationBif(ind,k))*5

dyBif(ind,k)=cos(OrientationBif(ind,k))*5

end

end

end

plot(CentroidBifX,CentroidBifY,'go','linewidth',2) % 绿色圆圈

OrientationLinesX=[CentroidBifX ...

CentroidBifX+dyBif(:,1)CentroidBifX ...

CentroidBifX+dyBif(:,2)CentroidBifX CentroidBifX+dyBif(:,3)]'

OrientationLinesY=[CentroidBifY

CentroidBifY-dxBif(:,1)CentroidBifY ...

CentroidBifY-dxBif(:,2)CentroidBifY CentroidBifY-dxBif(:,3)]'

plot(OrientationLinesX,OrientationLinesY,'g','linewidth',2) % 绿色短线

MinutiaTerm=[CentroidTermX,CentroidTermY,OrientationTerm]

MinutiaBif=[CentroidBifX,CentroidBifY,OrientationBif]

saveMinutia('John Doe',MinutiaTerm,MinutiaBif) % saveMinutia函数见附件程序

接登记,通过管理员身份进到登记界面;

2、 软件登记,用软件连接考勤机选择联机登记,登记后指纹自动保存到考勤机内;或者用电脑外接 指纹仪登记。

建议你直接在考勤机登记,只要你是管理员很方便。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12059814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存