spring cloud 與人臉識別項目記錄一

最近在進行人臉識別的項目砸民,是利用spring cloud框架及基礎(chǔ)進行開發(fā)的,開始真的是一頭霧水浓恶,什么都不懂玫坛,網(wǎng)上的資料很多,但是很多感覺大家都不是很認真的就拿出來寫上包晰,搞得自己很煩湿镀。我想把自己學(xué)習(xí)到的東西記錄一下,順便幫助大家學(xué)習(xí)一點知識伐憾。目前就記錄一下自己在項目中學(xué)習(xí)到的新知識勉痴,不敢把源碼亮出來,因為這畢竟是一個項目树肃,多多體諒蒸矛,但是盡量能讓大家用起來。希望大佬們可以指教我胸嘴,我這個人特別虛心接收指教雏掠,就怕學(xué)不夠,嘿嘿劣像。




一磁玉、前端攝像頭拍照問題

PC端拍照,主要需要利用攝像頭驾讲,但是存在瀏覽器兼容的問題,之前參照H5拍照席赂,發(fā)現(xiàn)我的谷歌瀏覽器不能出現(xiàn)攝像頭吮铭,后面找到一篇大佬的源碼程序大佬vue攝像頭拍照才發(fā)現(xiàn),之前的H5拍照的一個函數(shù)已經(jīng)過時了颅停,根本不行谓晌,根據(jù)大佬的源程序,我進行改造癞揉。貼出源碼纸肉,希望大家能用到溺欧。

1.在<template>里面


<div style="margin-left: 50px;width: 85%">

? <p style="margin-bottom: 2px">請拍攝1張自拍圖像

? ? <div class="takePhotostyle" id="takeindex">

? ? ? <i class="el-icon-plus" @click="handleChange">

? ? <div id="imgindex" >

? ? ? <img? v-if="imageUrl" :src="imageshow" class="avatar" >

? <el-dialog title="拍攝圖像"? :visible.sync="visibleCamera" placement="bottom" trigger="click" ref="dialog" width="45%">

? ? <div style="display: flex; width: 970px">

? ? ? <div class="cameraBox">

? ? ? ? <div style="text-align: center;font-size: 14px;font-weight: bold;margin-bottom: 10px;">攝像頭

? ? ? ? <video id="video" width="550" height="440" style="border: 1px solid #ccc" ref="myvedio">

? ? ? ? <div class="iCenter" style="margin-top: 20px">

? ? ? ? ? <el-Button type='primary' long size='large' @click="takePhone" style='width: 200px;'>

? ? ? ? ? ? 拍照

? ? ? ? <div style="text-align: center;font-size: 14px;font-weight: bold;margin-bottom: 10px;">

? ? ? ? ? 拍攝效果

? ? ? ? <canvas id='canvas' width='350' height='440' style="display: block;border: 1px solid #ccc"

? ? ? ? ? ? ? ? ref="mycanvas">

? ? ? ? <div class="iCenter" style="margin-top: 20px">

? ? ? ? ? <el-Button type='primary' long size='large' @click="takePhoneUpfile"

? ? ? ? ? ? ? ? ? ? style='width: 200px;' v-if="preViewVisible" >保存

</div>

</template>

2.<script>里面

data(){

return {

isMultiple:true,

? ? formDate:'',

? ? imageUrl:false,

? ? show:true,

? ? visibleCamera:false,

? ? preViewVisible:false,

? ? blobFile:null,

? ? canvas:null,

? ? video:null,

? ? MediaStreamTrack:null,

? ? memberInit: {}, //form標(biāo)記

? ? formface:{

input:'',

? ? }

}

},

mounted() {

this.memberInit = Object.assign({}, this.form);

? // 攝像頭

? this.canvas = document.getElementById('canvas');

? this.video = document.getElementById('video');

? //this.setHeaders() // 上傳token

//this.handleCamera();

},

methods: {

handleChange() {

//console.log(this.$refs.dialog);

? ? this.visibleCamera =true;

? ? this.preViewVisible =false;

? ? setTimeout(() => {

this.canvas =this.$refs.mycanvas;

? ? ? this.video =this.$refs.myvedio;

? ? ? //console.log(this.canvas);

? ? ? this.canvas.getContext('2d').clearRect(0, 0, this.canvas.width, this.canvas.height);

? ? ? let that =this;

? ? ? if (navigator.getUserMedia || navigator.mediaDevices.getUserMedia) {

navigator.mediaDevices.getUserMedia({

video:true,

? ? ? ? ? //audio: true

? ? ? ? }).then(function (stream) {

that.MediaStreamTrack =typeof stream.stop ==='function' ? stream : stream.getTracks()[1];

? ? ? ? ? that.video.srcObject = stream;

? ? ? ? ? that.video.play()

}).catch(function (err) {

console.log(err)

})

}else if (navigator.getMedia) {

navigator.getMedia({

video:true

? ? ? ? }).then(function (stream) {

that.MediaStreamTrack = stream.getTracks()[1];

? ? ? ? ? that.video.srcObject = stream;

? ? ? ? ? that.video.play()

}).catch(function (err) {

console.log(err)

})

}else if (navigator.webkitGetUserMedia) {

navigator.webkitGetUserMedia({

video:true

? ? ? ? }).then(function (stream) {

that.MediaStreamTrack = stream.getTracks()[1];

? ? ? ? ? that.video.srcObject = stream

that.video.play()

}).catch(function (err) {

console.log(err)

})

}else {

navigator.mozGetUserMedia({

video:true

? ? ? ? }).then(function (stream) {

that.MediaStreamTrack = stream.getTracks()[1];

? ? ? ? ? that.video.srcObject = stream;

? ? ? ? ? that.video.play()

}).catch(function (err) {

console.log(err)

})

}

}, 0);

? },

? takePhone() {

let that =this

? ? //console.log(that.canvas);

? ? that.canvas.getContext('2d').drawImage(this.video, 140, 0, 350, 440, 0, 0, 350, 440)// context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

? ? let dataurl = that.canvas.toDataURL('image/jpeg')

that.blobFile = that.dataURLtoFile(dataurl, 'camera.jpg')

that.preViewVisible =true

? },

? //保存圖片

? takePhoneUpfile() {

let that =this

? ? // let formData = new FormData()

// formData.append('file', that.blobFile)

? ? let type ='png';

? ? that.canvas.getContext('2d').drawImage(this.video, 140, 0, 350, 440, 0, 0, 350, 440)// context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);

? ? let dataurl = that.canvas.toDataURL(type);

? ? dataurl = dataurl.replace(this._fixType(type),'image/octet-stream');

? ? console.log(dataurl);

? ? //let save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');

? ? that.imageshow = dataurl;

? ? let divposition = document.getElementById('takeindex');

? ? let imgposition = document.getElementById('imgindex');

? ? divposition.style.margin ="0 150px 0 ";

? ? imgposition.style.margin ="-148px 0 1px 0 ";

? ? that.imageUrl =true;

? ? that.visibleCamera=false;

? ? //將圖片放在上傳的list中

? ? // that.onSubmit(formData) // formdata方式上傳圖片

? },

? _fixType(type){

type = type.toLowerCase().replace(/jpg/i, 'jpeg');

? ? let r = type.match(/png|jpeg|bmp|gif/)[0];

? ? return 'image/' + r;

? },

? dataURLtoFile(dataurl, filename) {

let arr = dataurl.split(',')

let mime = arr[0].match(/:(.*?);/)[1]

let bstr =atob(arr[1])

let n = bstr.length

? ? let u8arr =new Uint8Array(n)

while (n--) {

u8arr[n] = bstr.charCodeAt(n)

}

return new File([u8arr], filename, {type: mime})

},


3.style里面

.index{

width:85%;

? height:auto;

? margin-left:50px;

}

.centerbu{

text-align:center;

? width:85%;

? height:auto;

? margin-top:20px;

}

.centerbu >.buttonnum{

width:60%;

? margin-top:15px;

}

.el-dialog{

width:970px;

}

.takePhotostyle{

display:inline-block;

? text-align:center;

? cursor:pointer;

? outline:0;

? background-color:#fbfdff;

? border:1px dashed #c0ccda;

? border-radius:6px;

? -webkit-box-sizing:border-box;

? box-sizing:border-box;

? width:148px;

? height:148px;

? line-height:146px;

? vertical-align:top;

}

.takePhotostyle i{

font-size:30px;

? color:#8c939d;

? font-style:normal;

? font-weight:400;

? font-family:element-icons!important;

}

.avatar{

width:148px;

? height:148px;

? line-height:146px;

}

基本上該程序能在各個瀏覽器運用,并且能夠?qū)崿F(xiàn)彈窗拍照柏肪。大家記得引入element-ui姐刁,進行使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市烦味,隨后出現(xiàn)的幾起案子聂使,更是在濱河造成了極大的恐慌,老刑警劉巖谬俄,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柏靶,死亡現(xiàn)場離奇詭異,居然都是意外死亡溃论,警方通過查閱死者的電腦和手機屎蜓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钥勋,“玉大人炬转,你說我怎么就攤上這事”仕校” “怎么了返吻?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長乎婿。 經(jīng)常有香客問我测僵,道長,這世上最難降的妖魔是什么谢翎? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任捍靠,我火速辦了婚禮,結(jié)果婚禮上森逮,老公的妹妹穿的比我還像新娘榨婆。我一直安慰自己,他們只是感情好褒侧,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布良风。 她就那樣靜靜地躺著,像睡著了一般闷供。 火紅的嫁衣襯著肌膚如雪烟央。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天歪脏,我揣著相機與錄音疑俭,去河邊找鬼。 笑死婿失,一個胖子當(dāng)著我的面吹牛钞艇,可吹牛的內(nèi)容都是我干的啄寡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼哩照,長吁一口氣:“原來是場噩夢啊……” “哼挺物!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起葡秒,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤姻乓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眯牧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋岩,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年学少,在試婚紗的時候發(fā)現(xiàn)自己被綠了剪个。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡版确,死狀恐怖扣囊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绒疗,我是刑警寧澤侵歇,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站吓蘑,受9級特大地震影響惕虑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜磨镶,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一溃蔫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧琳猫,春花似錦伟叛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至账千,卻和暖如春侥蒙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蕊爵。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桦山,地道東北人攒射。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓醋旦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親会放。 傳聞我的和親對象是個殘疾皇子饲齐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,294評論 0 10
  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,654評論 0 3
  • 超高速音視頻編碼器用法: ffmpeg [options] [[infile options] -i infile...
    吉兇以情遷閱讀 4,586評論 0 4
  • 一、什么是企業(yè)社工咧最? 答:“把社工專業(yè)服務(wù)延伸到企業(yè)領(lǐng)域捂人,運用社會工作的方法服務(wù)企業(yè)員工、管理者和消費者矢沿,倡導(dǎo)企業(yè)...
    小社工閱讀 973評論 0 0
  • 老甲與老乙是一對夫妻滥搭,老甲為夫,老乙為婦捣鲸,都快到了知天命的年紀(jì)瑟匆,日子過得不緊不慢,他們年輕的時候遇上了計...
    小徐有點洋閱讀 274評論 0 2