在开始编写程序之前,让我们先汇入必要的函式库。
import cv2
import numpy as np
本章我们会用到VideoCapture
,所以记得先设置好:
cap = cv2.VideoCapture(0)
要想使用cv2.absdiff
找出绝对差值,那麽两个大小相同的阵列是必须要有的,我们用cap.read
从摄像头连续读取两张图片存入变数——拍摄时在摄像头前稍微移动一下,比如挥挥手。
img1 = cap.read()[1]
img2 = cap.read()[1]
为了让後续印出的结果成效更明显,我们先将读取进来的图片进行灰阶转换和高斯模糊化:
# 彩色图转灰阶图
gray1 = cv2.cvtColor(t0, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(t1, cv2.COLOR_BGR2GRAY)
# 高斯模糊化处理
blur1 = cv2.GaussianBlur(grey1,(5,5),0)
blur2 = cv2.GaussianBlur(grey2,(5,5),0)
接着就可以用cv2.absdiff
函式计算两张灰阶影像的差异值:
result = cv2.absdiff(blur1, blur2)
将计算後的result
用cv2.imshow
印出来:
cv2.imshow("diffShow",result)
cap.release()
cv2.destroyAllWindows()
可以看到结果是一张背景全黑,只有些微白色轮廓的灰阶图。
这是因为cap.read
进来的两张原图的背景没有差值,所以被标示为黑色。而刚才我们在拍照时移动造成的色阶差,使得函式判定两张图片在少许部份存在差值,经过计算後重新赋值,差值越大颜色越亮,也就达到只留移动轨迹的效果。
如果要写移动捕捉的功能,用cv2.absdiff
基本已经足够,但是这样得来的结果还是比较模糊,所以下章会接着讲取绝对值之後对结果的後续处理。
<<: iOS Developer Learning Flutter. Lesson26 Biometric
前言 昨天终於完成了铁人赛,所以今天是第 31 天,而这一天就当作铁人赛的结尾完赛心得跟大家聊聊吧。...
年龄这件无关紧要的小事 从小我就很讨厌任何因为年纪而设下的规范 尊重长辈绝对是因为他做人处事很值得...
随着5G网路时代来临,直播产业也越来越兴盛,生活中的各处都出现直播的应用:新闻直播、游戏直播、赛事...
上次说完回圈,其实还有一个回圈的范例没说到 就是巢状回圈,巢状回圈的意思是回圈叙述中又有其他回圈叙述...
吃水果 教学原文参考:吃水果 这篇文章会介绍,如何在 Scratch 3 里使用换造型、点击角色、音...