亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

canvas像素點操作之視頻綠幕摳圖

2024-08-26 00:21:00
字體:
來源:轉載
供稿:網友

 本文介紹了canvas像素點操作之視頻綠幕摳圖,分享給大家,具體如下:

用法:

context.putImageData(imgData, x, y, dX, dY, dWidth, dHeight);
   

 

參數 描述
imgData 規定要放回畫布的 ImageData 對象。
x ImageData 對象左上角的 x 坐標,以像素計。
y ImageData 對象左上角的 y 坐標,以像素計。
dX 可選。水平值(x),以像素計,在畫布上放置圖像的位置。
dY 可選。水平值(y),以像素計,在畫布上放置圖像的位置。
dWidth 可選。在畫布上繪制圖像所使用的寬度。
dHeight 可選。在畫布上繪制圖像所使用的高度。

 

下面的栗子簡單實現了幾個簡單的濾鏡效果,具體算法參考的這里,學過《數字圖像處理》的同學應該對此理解更深刻。

demo

 

 
canvas,像素點,視頻,綠幕,摳圖

 

該栗子純屬為了演示功能而做,如果只強調效果而不在乎數據的話,用CSS3的filter屬性便能高效又輕松地搞定。

部分代碼

import imgUrl from './component/sample.jpg';export default {	data () {		return {			imgUrl: imgUrl		}	},	methods: {		onOperate1 () {			this.ctx.putImageData(this.onCompute1(), 0, 0);		},		onOperate2 () {			this.ctx.putImageData(this.onCompute2(), 0, 0);		},		...		onCancel () {			this.reload();		},		onCompute1 () {			let data = this.frameData.data;	        for (let i = 0; i < this.imgDataLength; i += 4) {	          	let r = data[i + 0],	          		g = data[i + 1],	          		b = data[i + 2];	          	          		data[i + 0] = 255 - r;          		data[i + 1] = 255 - g;          		data[i + 2] = 255 - b;	        }	        return this.frameData;		},		onCompute2 () {			let data = this.frameData.data;	        for (let i = 0; i < this.imgDataLength; i += 4) {	          	data[i] = Math.abs(data[i + 1] - data[i + 2] + data[i + 1] + data[i]) * data[i] / 256;              	data[i + 1] = Math.abs(data[i + 2] - data[i + 1] + data[i + 2] + data[i]) * data[i] / 256;              	data[i + 2] = Math.abs(data[i + 2] - data[i + 1] + data[i + 2] + data[i]) * data[i + 1] / 256;	        }	        return this.frameData;		},		...	},	mounted () {        this.canvas = this.$refs['canvas'];        this.ctx = this.canvas.getContext('2d');        this.reload();	}}

上周跟同學去了一趟溧陽天目湖的南山竹海,在景區被忽悠拍了一張照片,就是這張 ——

 

 
canvas,像素點,視頻,綠幕,摳圖

 

然后被朋友圈吐槽摳圖。其實當時就是站在一塊綠幕前拍的:joy: 。

PS中魔法棒工具可以把圖片中一定容差下的相近像素都選中、清空,輕松做到一鍵“摳圖”,前提是主體一定要與背景有大的差異,即像素值差值越大,摳圖效果越好。

Canvas同樣可以做到,并且可以處理視頻幀,其中的原理是一樣的 —— 將每個視頻幀中綠幕的像素塊透明度置0即可。像這樣 ——

demo

 

 
canvas,像素點,視頻,綠幕,摳圖

 

部分代碼

import videoUrl from './component/video.ogv';import imgUrl from './component/sample.jpg';const TOLERANCE = 5;export default {	data () {		return {			videoUrl: videoUrl,			imgUrl: imgUrl		}	},	methods: {		draw () {			if (this.video.paused || this.video.ended) {	          	return;	        }			this.ctx.drawImage(this.video, 0, 0, this.width, this.height);			this.ctx.putImageData(this.cutOut(), 0, 0);		},		cutOut () {			let frameData = this.ctx.getImageData(0, 0, this.width, this.height),				len = frameData.data.length / 4;	        for (let i = 0; i < len; i++) {	          	let r = frameData.data[i * 4 + 0],	          		g = frameData.data[i * 4 + 1],	          		b = frameData.data[i * 4 + 2];	          	if (r - 100 >= TOLERANCE 	          	 && g - 100 >= TOLERANCE 	          	 && b - 43 <= TOLERANCE) {		            frameData.data[i * 4 + 3] = 0;	          	}	        }	        return frameData;		}	},	mounted () {		this.video = this.$refs['video'];        this.canvas = this.$refs['canvas'];        this.ctx = this.canvas.getContext('2d');        this.timer = null;        this.video.addEventListener('play', () => {            this.width = this.video.videoWidth;            this.height = this.video.videoHeight;            this.timer && clearInterval(this.timer);            this.timer = setInterval(() => {            	this.draw();            }, 50);        }, false);	}}

參考資料

Manipulating video using canvas

 Pixel manipulation with canvas

Canvas and images and pixels


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品www久久久久久广东| 久久久久国产一区二区三区| 国产日产亚洲精品| 1769国产精品| 最近2019中文字幕大全第二页| 亚洲精品久久久久中文字幕欢迎你| 欧美麻豆久久久久久中文| 国产亚洲精品美女| 麻豆国产精品va在线观看不卡| 黑人欧美xxxx| 日韩av一区在线观看| 欧美成人午夜激情视频| 国产一区二区三区毛片| 青青久久av北条麻妃海外网| 亚洲日韩欧美视频| 亚洲第一中文字幕| 黑人巨大精品欧美一区免费视频| 久久精品一本久久99精品| 性亚洲最疯狂xxxx高清| 国产精品美女免费看| 激情成人在线视频| 精品国产拍在线观看| 久久久精品一区二区三区| 亚洲国产成人久久综合| 久久精品视频99| 亚洲网址你懂得| 亚洲小视频在线观看| 欧美亚州一区二区三区| 国产精品丝袜久久久久久不卡| 国产精品久久久久77777| 日韩av123| 中文字幕精品视频| 久久久久久久国产精品视频| 国产精品久久久久久久午夜| 成人免费网站在线| 日韩经典第一页| 国产精品美女www| 亚洲伊人久久大香线蕉av| 国产精品视频久久| 国产日韩欧美电影在线观看| 久久久久久久久91| 亚洲精品网址在线观看| 日韩成人激情影院| 欧美成人合集magnet| 欧美高清视频在线观看| 亚洲小视频在线| 欧美日韩亚洲视频一区| 亚洲国产精品电影在线观看| 一个人看的www久久| 色狠狠久久aa北条麻妃| 91精品国产高清自在线看超| 久久99久久99精品免观看粉嫩| 日韩中文字幕免费视频| 姬川优奈aav一区二区| 国产视频在线观看一区二区| 日韩福利在线播放| 国产欧美精品一区二区三区介绍| 中文字幕日韩精品在线观看| 欧美高跟鞋交xxxxxhd| 欧美大片免费看| 成人免费高清完整版在线观看| 国产精品久久久久久久久免费| 九九热这里只有在线精品视| 日韩中文字幕精品视频| 久久久久中文字幕2018| 亚洲国产97在线精品一区| 精品国产电影一区| 欧美中文字幕第一页| 亚洲男人天天操| 亚洲影视中文字幕| 欧美成人激情图片网| 亚洲国内高清视频| 国产精品青草久久久久福利99| 精品视频偷偷看在线观看| 国产丝袜精品视频| 亚洲国产欧美久久| 亚洲国产精品美女| 亚洲xxxxx性| 日本亚洲欧洲色α| 精品久久久999| 久久精品国产96久久久香蕉| 久久久噜噜噜久噜久久| 国产精品91免费在线| 亚洲成人激情在线观看| 高清日韩电视剧大全免费播放在线观看| 国产精品毛片a∨一区二区三区|国| 国产成人综合亚洲| 亚洲国产精品久久久| 国产91ⅴ在线精品免费观看| 欧美日韩国产区| 91九色在线视频| 国产精品看片资源| 精品无人国产偷自产在线| 久久免费精品日本久久中文字幕| 亚洲精品综合久久中文字幕| 国产日韩精品电影| 亚洲免费一在线| 国内精品国产三级国产在线专| 亚洲色图偷窥自拍| 亚洲欧美国产高清va在线播| 亲爱的老师9免费观看全集电视剧| 国产精品影片在线观看| 日韩一区二区精品视频| 欧美电影电视剧在线观看| 国产精品色婷婷视频| 亚洲精品电影久久久| 亚洲最大福利视频网站| 亚洲精品www久久久久久广东| 欧美日韩国产麻豆| 国产精品久久久久久久美男| 亚洲欧洲在线播放| 亚洲成人激情小说| 国产精品久久久久久久一区探花| 亚洲天堂av图片| 亚洲成色777777在线观看影院| 91香蕉嫩草神马影院在线观看| 国产精品成人免费视频| 久久精品电影一区二区| 在线观看欧美成人| 国产福利视频一区| 国产在线不卡精品| 欧美成人精品一区二区三区| 欧美裸体男粗大视频在线观看| 欧美伦理91i| 亚洲第一视频网站| 国产精品视频99| 精品久久久久久久久久久久久| 一区二区av在线| 欧美日本啪啪无遮挡网站| 38少妇精品导航| 91国偷自产一区二区三区的观看方式| 久久精品视频亚洲| 久久精品在线视频| 色哟哟亚洲精品一区二区| 亚洲精品成人久久久| 久久好看免费视频| 亚洲成av人片在线观看香蕉| 亚洲精品动漫久久久久| 92版电视剧仙鹤神针在线观看| 亚洲第一福利视频| 欧美色视频日本版| 992tv成人免费视频| 一本色道久久综合狠狠躁篇怎么玩| 欧美视频中文在线看| 在线中文字幕日韩| 一区二区三区无码高清视频| 国产精品夜色7777狼人| 日韩成人性视频| 97色在线视频观看| 亚洲成人精品在线| 亚洲国产成人在线播放| 911国产网站尤物在线观看| 欧美成人午夜影院| 97热在线精品视频在线观看| 成人亚洲综合色就1024| 亚洲天堂av综合网| 欧美午夜www高清视频| 欧美日韩亚洲系列| 国产精品国产亚洲伊人久久| 久久精品亚洲精品| 日韩精品免费在线播放| 国产精品高精视频免费| 亚洲精品www| 亚洲天堂一区二区三区|