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

在学校常常有同学电脑失窃,大抵都是粗细大意。据说iPhone手机失窃后能够获取小偷的照片,从而将照片找到。如今用matlab写一个程序使得当小偷使用电脑上网时,电脑自己主动将电脑前面的人的照片发到你指定的邮箱。

前提是你的电脑装有摄像头而且有网!

先用以下代码測试你邮箱是否正确设置:

clear
 myaddress='[email protected]';
%这里sender为你发邮箱的qq号。注意你的邮箱要已经提供SMTP服务。没有也没关系,qq邮箱会提醒设置设置的mypassword='password';%这里为你邮上面邮箱相应的密码(一般和QQ密码同样)
to = '[email protected]'; %这里为你要发送到的邮箱
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
clear
 myaddress='[email protected]';
%这里sender为你发邮箱的qq号。注意你的邮箱要已经提供SMTP服务,没有也没关系,qq邮箱会提醒设置设置的mypassword='password';           %这里为你邮上面邮箱相应的密码(一般和QQ密码同样)
to =  '[email protected]';              %这里为你要发送到的邮箱
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的范围,值越小表示两幅图很easy匹配,最好取值为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。导致拍摄图像时会显示出窗体。easy被小偷发现。假设你的摄像头启动十分快能够将Step2中的程序改为:

clear
myaddress='[email protected]';
mypassword='password';
to = '[email protected]';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

时间: 2024-10-06 03:17:21

【Matlab编程】Matlab让电脑失而复得的相关文章

代写MATLAB编程- MATLAB编程代写Design a pushdown automata (PDA)

Design a pushdown automata (PDA)1.Consider the language of all binary strings that start and end with the same symbol. (a) Write the production rules of a grammar for this language. Show some derivations to test that your grammar is correct. (b) Desi

MATLAB编程与应用系列-第1章 MATLAB概述

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] 在科学研究和工程计算领域经常会遇到一些非常复杂的计算问题,利用计算器或手工计算是无法胜任的,只能借助计算机编程来实现,MATLAB正是解决这样复杂计算问题的强大的科学计算软件.MATL

【Matlab编程】matlab 画图

1.  不用截图工具就可以将图保存成图像格式,并且没有背景颜色:saveas(gcf ,'outputname','png/jpg'),第三项省略时默认为fig.m文件 2.  计算形如(-1)^2/3,应该是默认先算(-1)^(1/3),plot的时候命令窗会警告略去了虚部, 为了避免不必要的麻烦((-1)^2)^1/3这样写,例子如下:这个是代码 clear clc subplot(1,2,1); ezplot('x^2+(y-(x^2)^(1/3))^2-1',[-2,2]); subpl

Matlab编程基础

平台:Win7 64 bit,Matlab R2014a(8.3) "Matlab"是"Matrix Laboratory" 的缩写,中文"矩阵实验室",是强大的数学工具.本文侧重于Matlab的编程语言侧面,讲述Matlab的基本语法,以及用Matlab语言进行程序设计.值得一提的是,Matlab从R2014a版本开始支持中文语言了! 1.基本概念 Matlab默认启动后界面: Matlab有关的文件后缀: File Extension Des

MATLAB 编程风格指南及注意事项

MATLAB编程风格指南Richard Johnson 著Genial 译MATLAB 编程风格指南Richard JohnsonVersion 1.5,Oct. 2002版权: Datatool 所有翻译:Genial @ USTC“Language is like a cracked kettle on which we beat tuned to dance to, while allthe time we long to move the stars to pity.”- Gustave

【Matlab编程】哈夫曼编码的Matlab实现

在前年暑假的时候,用C实现了哈夫曼编译码的功能,见文章<哈夫曼树及编译码>.不过在通信仿真中,经常要使用到Matlab编程,所以为了方便起见,这里用Matlab实现的哈夫曼编码的功能.至于哈夫曼编译码的基本原理,我们可以参考之前的文章<哈夫曼树及编译码>,里面有详细的说明及图解过程.下面直接给出具体的Matlab实现的哈夫曼编码函数,由于程序中注释还算比较详细,在此就不予与说明: function [ h,e ] = Huffman_code( p ) %p为概率分布,此函数功能是

【Matlab编程】生日快乐歌(显示歌词)—matlab版

clear all A4=440;%标准音A4 不同的曲调音调不同scale的取值范围不同 pt=44100;p0=pt/2;%频率 scale=A4/2^(9/12)*2.^((-12:11)/12);%这里可以调节音调高低,eg:改变式子中的-12:11为0:23 map=[1 3 5 6 8 10 12 13 15 17 18 20 22 24 25];%音符,这个需要看曲谱编码 score=[5 5 6 5 8 7 5 5 6 5 9 8 5 5 12 10 8 7 6 6 11 11

【Matlab编程】马氏链随机模拟

本文是利用蒙特卡罗算法对马氏链过程的模拟.假设有10个状态,从每个状态到与之相邻状态的概率是相同的,仿真次数为1000,及进行了1000次状态转移.我们以动画的形式再现了状态转移的过程,并记录了到达每个状态的次数,具体实现如下: close all;clc;clear; figure; s=1; n=1000; r=1; % 圆圈的半径 title('等概率情况的计算机模拟') set(gcf,'doublebuffer','on'); % 设置图形渲染效果 xlabel('Please pre

代写Matlab编程作作、代写Engineering Modeling

代写Matlab编程作作.代写Engineering ModelingEGR 102: Introduction to Engineering Modeling(Spring 2018)EGR 102 Term Project – Flint Water CrisisBackground – The Flint water crisis is a real-world example of the challenges to engineeringmodeling. In 2011, Flint

MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排

本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:[email protected]. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:[email protected] #MATLAB基本介绍Matlab工程软件是MathWorks公司推出的一款具备强大数学运算能力的数学软件.随着工具箱的不断丰富和完善,Matlab工程软件几乎可以应用于社会各种工程领