Add files via upload

Esse commit está contido em:
2018-05-22 16:53:01 -03:00
commit de GitHub
commit 937d044905
11 arquivos alterados com 98599 adições e 0 exclusões
+21991
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+15452
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+137
Ver Arquivo
@@ -0,0 +1,137 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JPEGCam Test Page</title>
<meta name="generator" content="TextMate http://macromates.com/">
<meta name="author" content="Joseph Huckaby">
<!-- Date: 2008-03-15 -->
</head>
<body>
<table border><tr><td valign=top width=1>
<h1>Sistema de aquisição<br> de imagens de voluntários e detecção de faces</h1>
<script type="text/javascript" src="webcam.js"></script>
<script language="JavaScript">
//Trecho inserido por wellton para enviar a imagem tirada via ajax para o para o processaImagem.php
function chamadaAjax(imagem){
new funcao_ajax();
ajax.open("GET", "processaImagem.php?imagem="+imagem, true);
new carregando(2, imagem);
ajax.send(null);
}
function funcao_ajax(){
if(window.XMLHttpRequest){
ajax = new XMLHttpRequest();
}else if(window.ActiveXObject){
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ajax = new ActiveXObject("Msxml2.XMLHTTP");
}
return ajax;
}
function carregando(num, imagem){
ajax.onreadystatechange = function (){
document.getElementById("carregar"+num).innerHTML = "detectando faces, aguarde...";
if ( ajax.readyState == 4) { // Completo
if ( ajax.status == 200) { // resposta do servidor OK
document.getElementById("carregar"+num).innerHTML = ajax.responseText;
if(num==1) chamadaAjax(imagem);
} else {
alert( "Problema: " + ajax.statusText );
}
}
}
}
webcam.set_api_url( 'test.php' );
webcam.set_quality( 100 ); // Qualidade JPEG (1 - 100)
webcam.set_shutter_sound( true ); // toca o som da foto
</script>
<!-- Próximo, definir uma foto 320x240 -->
<script language="JavaScript">
document.write( webcam.get_html(320, 240) );
</script>
<!-- Alguns botões para controle -->
<br/><form>
<input type=button value="configurar WebCam..." onClick="webcam.configure()">
&nbsp;&nbsp;
<input type=button value="Tirar foto" onClick="take_snapshot()">
</form>
<!-- código para ser executado e enviar para test.php -->
<script language="JavaScript">
webcam.set_hook( 'onComplete', 'my_completion_handler' );
function take_snapshot() {
// tira a foto e envia para o sevidor
document.getElementById('upload_results').innerHTML = '<h1>Enviando...</h1>';
webcam.snap();
}
function my_completion_handler(msg) {
// Extrai a URL da saída do PHP
if (msg.match(/(http\:\/\/\S+)/)) {
var image_url = RegExp.$1;
//mostra a imagem JPEG na tela
document.getElementById('upload_results').innerHTML =
'<h1>Envio para o servidor com sucesso!</h1>' +
'<h3>Caminho da Imagem: ' + image_url + '</h3>' +
'<img src="' + image_url + '">';
// Reinicia a camera para tirar outra foto
webcam.reset();
}
else alert("PHP Error: " + msg);
var partes=image_url.split("/");
var imagem = partes[4];
partes=imagem.split(".");
imagem = partes[0];
alert(imagem);
chamadaAjax(imagem);
}
</script>
</td><td valign=top width=1>
<div id="upload_results" style="background-color:#eee;"></div>
</td>
<td valign=top>
<div style="background-color:#aaa;" id='carregar2' ></div>
</td>
</tr>
<tr>
<td align="right" colspan="3">
Configurado e modificado por @WelltonCosta
</td>
</tr>
</table>
</body>
</html>
+67
Ver Arquivo
@@ -0,0 +1,67 @@
<?php
//usando a bibliteca do OpenCV
use OpenCV\Image as Image;
//Exibindo texto na tela
echo "<h1>Imagem Processada</h1>";
//Função que detecta e marca com uma linha azul a face
//gravando em arquivo o arquivo com a face detectada
//e uma imagem apenas com a face recortada da original
detectaFace($_GET["imagem"].".jpg");
//Exibindo a imagem com a face detectada na tela
echo " <br><img src='".$_GET['imagem']."FaceMarcada.jpg'>&nbsp;&nbsp;&nbsp;";
//Exibindo a face na tela
echo "<img src='".$_GET['imagem']."FaceSelecionada.jpg'>";
//função detectaFace
function detectaFace($imagem){
//carregando pixels da imagem via OpenCV e jogando
//valores na variávei $i
$i = Image::load($imagem, Image::LOAD_IMAGE_COLOR);
//chamada do método HaarDetectObjects para
//identificar as faces... de acordo com o
//treinamento do arquivo haarcascade_frontalface_alt.xml
//disponibilizado pelo OpenCV
$facesIdentificadas = $i->haarDetectObjects("haarcascade_frontalface_alt.xml");
//joga as faces identificadas dentro do foreach
//para que os retangulos sejam desenhados em cima
//de x, y, largura e altura identificados na imagem
foreach ($facesIdentificadas as $r) {
//chama o método rectangle do OpenCV para desenhar o retangulo na face de acordo com os dados identificados
$i->rectangle($r['x'], $r['y'], $r['width'], $r['height']);
//exibe na tela os valores identificados
echo "x=".$r['x']."<br>y=". $r['y']."<br>largura=". $r['width']."<br>altura=". $r['height'];
//Chama função para cortar a face identificada da imagem e gravar em arquivo
cortarFace($imagem, $r['x'], $r['y'], $r['height'], $r['width']);
}
//chamada do método para salvar a imagem original com a face identificada com o retangulo azul
$i->save($_GET["imagem"]."FaceMarcada.jpg");
return $i;
}
//função cortar Face
function cortarFace($imagem, $esquerda, $emCima, $direita, $emBaixo){
// Pega dimensões da imagem original
list($larguraOriginal, $alturaOriginal) = getimagesize($imagem);
// Redefinir dimensões da imagem para colocar só a face identificada
$canvas = imagecreatetruecolor($direita, $emBaixo);
$imagemAtual = imagecreatefromjpeg($imagem);
imagecopy($canvas, $imagemAtual, 0, 0, $esquerda, $emCima, $larguraOriginal, $alturaOriginal);
imagejpeg($canvas, $_GET["imagem"]."FaceSelecionada.jpg", 100);
//TERmiNA cORTE
}
?>
BIN
Ver Arquivo
Arquivo binário não exibido.
+17
Ver Arquivo
@@ -0,0 +1,17 @@
<?php
/* JPEGCam Test Script */
/* Receives JPEG webcam submission and saves to local file. */
/* Make sure your directory has permission to write files as your web server user! */
$filename = date('YmdHis') . '.jpg';
$result = file_put_contents( $filename, file_get_contents('php://input') );
if (!$result) {
print "ERROR: Failed to write data to $filename, check permissions\n";
exit();
}
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['REQUEST_URI']) . '/' . $filename;
print "$url\n";
?>
+197
Ver Arquivo
@@ -0,0 +1,197 @@
/* JPEGCam v1.0.9 */
/* Webcam library for capturing JPEG images and submitting to a server */
/* Copyright (c) 2008 - 2009 Joseph Huckaby <jhuckaby@goldcartridge.com> */
/* Licensed under the GNU Lesser Public License */
/* http://www.gnu.org/licenses/lgpl.html */
/* Usage:
<script language="JavaScript">
document.write( webcam.get_html(320, 240) );
webcam.set_api_url( 'test.php' );
webcam.set_hook( 'onComplete', 'my_callback_function' );
function my_callback_function(response) {
alert("Success! PHP returned: " + response);
}
</script>
<a href="javascript:void(webcam.snap())">Take Snapshot</a>
*/
// Everything is under a 'webcam' Namespace
window.webcam = {
version: '1.0.9',
// globals
ie: !!navigator.userAgent.match(/MSIE/),
protocol: location.protocol.match(/https/i) ? 'https' : 'http',
callback: null, // user callback for completed uploads
swf_url: 'webcam.swf', // URI to webcam.swf movie (defaults to cwd)
shutter_url: 'shutter.mp3', // URI to shutter.mp3 sound
api_url: '', // URL to upload script
loaded: false, // true when webcam movie finishes loading
quality: 90, // JPEG quality (1 - 100)
shutter_sound: true, // shutter sound effect on/off
stealth: false, // stealth mode (do not freeze image upon capture)
hooks: {
onLoad: null,
onComplete: null,
onError: null
}, // callback hook functions
set_hook: function(name, callback) {
// set callback hook
// supported hooks: onLoad, onComplete, onError
if (typeof(this.hooks[name]) == 'undefined')
return alert("Hook type not supported: " + name);
this.hooks[name] = callback;
},
fire_hook: function(name, value) {
// fire hook callback, passing optional value to it
if (this.hooks[name]) {
if (typeof(this.hooks[name]) == 'function') {
// callback is function reference, call directly
this.hooks[name](value);
}
else if (typeof(this.hooks[name]) == 'array') {
// callback is PHP-style object instance method
this.hooks[name][0][this.hooks[name][1]](value);
}
else if (window[this.hooks[name]]) {
// callback is global function name
window[ this.hooks[name] ](value);
}
return true;
}
return false; // no hook defined
},
set_api_url: function(url) {
// set location of upload API script
this.api_url = url;
},
set_swf_url: function(url) {
// set location of SWF movie (defaults to webcam.swf in cwd)
this.swf_url = url;
},
get_html: function(width, height, server_width, server_height) {
// Return HTML for embedding webcam capture movie
// Specify pixel width and height (640x480, 320x240, etc.)
// Server width and height are optional, and default to movie width/height
if (!server_width) server_width = width;
if (!server_height) server_height = height;
var html = '';
var flashvars = 'shutter_enabled=' + (this.shutter_sound ? 1 : 0) +
'&shutter_url=' + escape(this.shutter_url) +
'&width=' + width +
'&height=' + height +
'&server_width=' + server_width +
'&server_height=' + server_height;
if (this.ie) {
html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+this.protocol+'://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="webcam_movie" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+this.swf_url+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/></object>';
}
else {
html += '<embed id="webcam_movie" src="'+this.swf_url+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="webcam_movie" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" />';
}
this.loaded = false;
return html;
},
get_movie: function() {
// get reference to movie object/embed in DOM
if (!this.loaded) return alert("ERROR: Movie is not loaded yet");
var movie = document.getElementById('webcam_movie');
if (!movie) alert("ERROR: Cannot locate movie 'webcam_movie' in DOM");
return movie;
},
set_stealth: function(stealth) {
// set or disable stealth mode
this.stealth = stealth;
},
snap: function(url, callback, stealth) {
// take snapshot and send to server
// specify fully-qualified URL to server API script
// and callback function (string or function object)
if (callback) this.set_hook('onComplete', callback);
if (url) this.set_api_url(url);
if (typeof(stealth) != 'undefined') this.set_stealth( stealth );
this.get_movie()._snap( this.api_url, this.quality, this.shutter_sound ? 1 : 0, this.stealth ? 1 : 0 );
},
freeze: function() {
// freeze webcam image (capture but do not upload)
this.get_movie()._snap('', this.quality, this.shutter_sound ? 1 : 0, 0 );
},
upload: function(url, callback) {
// upload image to server after taking snapshot
// specify fully-qualified URL to server API script
// and callback function (string or function object)
if (callback) this.set_hook('onComplete', callback);
if (url) this.set_api_url(url);
this.get_movie()._upload( this.api_url );
},
reset: function() {
// reset movie after taking snapshot
this.get_movie()._reset();
},
configure: function(panel) {
// open flash configuration panel -- specify tab name:
// "camera", "privacy", "default", "localStorage", "microphone", "settingsManager"
if (!panel) panel = "camera";
this.get_movie()._configure(panel);
},
set_quality: function(new_quality) {
// set the JPEG quality (1 - 100)
// default is 90
this.quality = new_quality;
},
set_shutter_sound: function(enabled, url) {
// enable or disable the shutter sound effect
// defaults to enabled
this.shutter_sound = enabled;
this.shutter_url = url ? url : 'shutter.mp3';
},
flash_notify: function(type, msg) {
// receive notification from flash about event
switch (type) {
case 'flashLoadComplete':
// movie loaded successfully
this.loaded = true;
this.fire_hook('onLoad');
break;
case 'error':
// HTTP POST error most likely
if (!this.fire_hook('onError', msg)) {
alert("JPEGCam Flash Error: " + msg);
}
break;
case 'success':
// upload complete, execute user callback function
// and pass raw API script results to function
this.fire_hook('onComplete', msg.toString());
break;
default:
// catch-all, just in case
alert("jpegcam flash_notify: " + type + ": " + msg);
break;
}
}
};
BIN
Ver Arquivo
Arquivo binário não exibido.