【Matlab编程】Matlab让电脑失而复得

2024-03-24 15:08

本文主要是介绍【Matlab编程】Matlab让电脑失而复得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       在学校经常有同学电脑失窃,大抵都是粗细大意。据说iPhone手机失窃后可以获取小偷的照片,从而将照片找到。现在用matlab写一个程序使得当小偷使用电脑上网时,电脑自动将电脑前面的人的照片发到你指定的邮箱。前提是你的电脑装有摄像头并且有网!先用下面代码测试你邮箱是否正确设置:

clearmyaddress='sender@qq.com';
%这里sender为你发邮箱的qq号,注意你的邮箱要已经提供SMTP服务,没有也没关系,qq邮箱会提醒设置设置的mypassword='password';%这里为你邮上面邮箱对应的密码(一般和QQ密码相同)
to = 'receiver@qq.com'; %这里为你要发送到的邮箱
setpref('Internet','E_mail',myaddress);
setpref('Internet','SMTP_Server','smtp.qq.com');
setpref('Internet','SMTP_Username',myaddress);
setpref('Internet','SMTP_Password',mypassword);
props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth','true');
subject ='电脑小偷';obj = videoinput('winvideo');
h=preview(obj);
set(gcf,'Visible','off')
set(h,'Visible','on')
start(obj);
pause(10);
photo=getsnapshot(obj);
imwrite(photo, 'thief.jpg')sendmail(to, subject,[],'thief.jpg'); 


在matlab中执行上述脚本文件,看是否发送邮件
以下四步是进行电脑跟踪:程序代码如下:
第一步:设置自己的相片(注意所有操作都是在你matlab当前目录下)
obj = videoinput('winvideo');
h=preview(obj);
set(gcf,'Visible','off')
set(h,'Visible','on')
start(obj);
pause(10) % 如果你的电脑调用摄像头的时间非常短,可以不用这句
photo=getsnapshot(obj);
imwrite(photo, 'yourpicture.jpg'); 
第二步:获取当前电脑前人的相片并与自己的图片进行比较,若相似度不高,则会发送当前电脑前人的相片到你指定的邮箱
%文件名为sendemail.m
clearmyaddress='sender@qq.com';  
%这里sender为你发邮箱的qq号,注意你的邮箱要已经提供SMTP服务,没有也没关系,qq邮箱会提醒设置设置的mypassword='password';           %这里为你邮上面邮箱对应的密码(一般和QQ密码相同)
to =  'receiver@qq.com';              %这里为你要发送到的邮箱
setpref('Internet','E_mail',myaddress);
setpref('Internet','SMTP_Server','smtp.qq.com');
setpref('Internet','SMTP_Username',myaddress);
setpref('Internet','SMTP_Password',mypassword);
props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth','true');
subject ='电脑小偷';   %邮件主题obj = videoinput('winvideo');
h=preview(obj);
set(gcf,'Visible','off')
set(h,'Visible','on')
start(obj);
pause(10) % 如果你的电脑调用摄像头的时间非常短,可以不用这句
photo=getsnapshot(obj);
imwrite(photo, 'thief.jpg')
pause(10)%如果你的电脑调用摄像头的时间非常短,可以不用这三句
photo=getsnapshot(obj);
imwrite(photo, 'thief.jpg')a=imread('yourpicture.jpg');%这里的'yourpicture.jpg为你自己的照片
a1=rgb2gray(a);
aa=imread('thief.jpg');
aa1=rgb2gray(aa);
corr= corr2(a1,aa1);
if corr<0.85   %0.85可以自己设置0-1的范围,值越小表示两幅图很容易匹配,最好取值为0.8-0.9
sendmail(to, subject,[],'thief.jpg');
end 

第二步:将step2中的程序编译生成exe文件 
可以直接上网找到方法,我在这里示范一种,操作如下:首先去掉黑框: 在命令窗口输入:cd(prefdir) edit compopts.bat在打开的文件最后添加以下语句(前提是在下面图解的安装编译器选择的是vc编译器,若选择其它编译器,自己百度方法):       set LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
编译器的安装如下图: 

mcc -m sendemail (sendemail 为step2中的文件)这一命令可能会编译几分钟,请耐心等待,执行完后会生成sendemail.exe文件 
 第四步:创建任务计划        
右击我的计算机,单击管理,在左边栏中选中“任务计划程序”。在右边栏中选中“创建任务“,弹出创建任务对话框,为任务填个名称,勾选下方隐藏,配置选为,windows7那一项,触发器选项卡中单击“新建”,选择“登录时”,“每天”,勾选延迟任务,设定延迟时间为3分钟,确定。“操作”选项卡,单击新建,选择“启动程序”,单击“浏览”,选择matlab目录下生成的exe文件,确定。“条件”选项卡中只需勾选“只有在以下网络连接可用时才启动”,然后在下拉列表中选择“任何连接”(这个设置很重要,只有在电脑联网的情况下才能发送邮件),确定。后面两个选项卡,自己看样子办。然后注销用户重新登录。在三分钟内连接上网络,三分钟后,程序会自动运行,整个过程结束。  
程序说明:由于程序中有preview,导致拍摄图像时会显示出窗口,容易被小偷发现,如果你的摄像头启动十分快可以将Step2中的程序改为:
clear
myaddress='sender@qq.com';
mypassword='password';
to = 'receiver@qq.com';setpref('Internet','E_mail',myaddress);
setpref('Internet','SMTP_Server','smtp.qq.com');
setpref('Internet','SMTP_Username',myaddress);
setpref('Internet','SMTP_Password',mypassword);
props = java.lang.System.getProperties;
props.setProperty('mail.smtp.auth','true');
subject ='电脑小偷';obj = videoinput('winvideo');
%h=preview(obj);
set(gcf,'Visible','off')
%set(h,'Visible','on')start(obj);
pause(2);
photo=getsnapshot(obj);
imwrite(photo, 'thief.jpg')
a=imread('yourpicture.jpg');
a1=rgb2gray(a);
aa=imread('thief.jpg');
aa1=rgb2gray(aa);
corr= corr2(a1,aa1);
if corr<0.85
sendmail(to, subject,[],'thief.jpg');
end

上面程序的图像匹配不准确,希望在以后通过图像识别来精确地辨别电脑主人。在Step4中你也可以根据自己的需求改变任务创建计划,比如说,设置在每天的具体时间点启动任务,获取图像并发送。在这种情况下,就没有必要进行图像匹配了,就可以只使用本文最前面的一段程序就可以了。


原文:http://blog.csdn.net/tengweitw/article/details/34559489

作者:nineheadedbird



这篇关于【Matlab编程】Matlab让电脑失而复得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841963

相关文章

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

mss32.dll文件丢失怎么办? 电脑提示mss32.dll丢失的多种修复方法

《mss32.dll文件丢失怎么办?电脑提示mss32.dll丢失的多种修复方法》最近,很多电脑用户可能遇到了mss32.dll文件丢失的问题,导致一些应用程序无法正常启动,那么,如何修复这个问题呢... 在电脑常年累月的使用过程中,偶尔会遇到一些问题令人头疼。像是某个程序尝试运行时,系统突然弹出一个错误提

电脑提示找不到openal32.dll文件怎么办? openal32.dll丢失完美修复方法

《电脑提示找不到openal32.dll文件怎么办?openal32.dll丢失完美修复方法》openal32.dll是一种重要的系统文件,当它丢失时,会给我们的电脑带来很大的困扰,很多人都曾经遇到... 在使用电脑过程中,我们常常会遇到一些.dll文件丢失的问题,而openal32.dll的丢失是其中比较

电脑win32spl.dll文件丢失咋办? win32spl.dll丢失无法连接打印机修复技巧

《电脑win32spl.dll文件丢失咋办?win32spl.dll丢失无法连接打印机修复技巧》电脑突然提示win32spl.dll文件丢失,打印机死活连不上,今天就来给大家详细讲解一下这个问题的解... 不知道大家在使用电脑的时候是否遇到过关于win32spl.dll文件丢失的问题,win32spl.dl

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

电脑提示msvcp90.dll缺少怎么办? MSVCP90.dll文件丢失的修复方法

《电脑提示msvcp90.dll缺少怎么办?MSVCP90.dll文件丢失的修复方法》今天我想和大家分享的主题是关于在使用软件时遇到的一个问题——msvcp90.dll丢失,相信很多老师在使用电脑时... 在计算机使用过程中,可能会遇到 MSVCP90.dll 丢失的问题。MSVCP90.dll 是 Mic

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同