Day27-移动侦测1

在开始编写程序之前,让我们先汇入必要的函式库。

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)

将计算後的resultcv2.imshow印出来:

cv2.imshow("diffShow",result)

cap.release()
cv2.destroyAllWindows()

可以看到结果是一张背景全黑,只有些微白色轮廓的灰阶图。

这是因为cap.read进来的两张原图的背景没有差值,所以被标示为黑色。而刚才我们在拍照时移动造成的色阶差,使得函式判定两张图片在少许部份存在差值,经过计算後重新赋值,差值越大颜色越亮,也就达到只留移动轨迹的效果。

如果要写移动捕捉的功能,用cv2.absdiff基本已经足够,但是这样得来的结果还是比较模糊,所以下章会接着讲取绝对值之後对结果的後续处理。


<<:  iOS Developer Learning Flutter. Lesson26 Biometric

>>:  Day27. 范例:Line群组通知(观察者模式)

从 JavaScript 角度学 Python(31) - 下一步,你想学什麽?

前言 昨天终於完成了铁人赛,所以今天是第 31 天,而这一天就当作铁人赛的结尾完赛心得跟大家聊聊吧。...

2.4.1 Design System - Avatar元件

年龄这件无关紧要的小事 从小我就很讨厌任何因为年纪而设下的规范 尊重长辈绝对是因为他做人处事很值得...

Day 19 云端快速架设直播应用

随着5G网路时代来临,直播产业也越来越兴盛,生活中的各处都出现直播的应用:新闻直播、游戏直播、赛事...

[iT铁人赛Day13]JAVA回圈的跳离

上次说完回圈,其实还有一个回圈的范例没说到 就是巢状回圈,巢状回圈的意思是回圈叙述中又有其他回圈叙述...

Day 3 ( 入门 ) 吃水果

吃水果 教学原文参考:吃水果 这篇文章会介绍,如何在 Scratch 3 里使用换造型、点击角色、音...