OpenCV检测场景内是否有移动物体

本帖使用OpenCV检测移动的物体(洋文:Motion Detection)。它的应用非常广泛,常用在视频监控(当摄像头内有移动物体出现时,摄像头会自动抓拍,并保存图像/视频)、车流量监控等等。

我喜欢听着音乐上大号,我就想有没有办法在我上大号时自动播放音乐,智能马桶的滚粗(能放音乐的应该不多)。这时,我想起了闲置的树莓派,使用OpenCV+树莓派做Motion Detection,只要检测到有移动的东西(人)就开始播放音乐。恩,没错,本人相当懒。另外,在上大号时被摄像头照着也挺别扭。

Motion Detection的实现方法有很多,我使用的方法是Background subtractiontutorial_py_bg_subtraction继续阅读OpenCV检测场景内是否有移动物体

OpenCV之使用Haar Cascade进行对象检测

Haar Cascade常用来做人脸检测,其实它可以检测任何对象。OpenCV项目源码中有很多训练好的Haar分类器。

OpenCV之使用Haar Cascade进行对象检测
OpenCV自带的haarcascade文件

本帖开始先了解怎么使用这些现成的分类器,最后再训练自己的Haar分类器。如果你要检测什么物体,先Google,也许已经有训练好的Haar分类器了(像汽车、猫,狗之类的)。 继续阅读OpenCV之使用Haar Cascade进行对象检测

Ubuntu 16.04编译安装OpenCV(Python)

本帖记录在Ubuntu 16.04上安装OpenCV的步骤,并分别安装Python 2和Python 3的绑定。如果你只用C++接口,可以忽略Python的安装。

Ubuntu 16.04系统默认安装了两个Python版本:Python2核Python3,默认的版本还是Python2。本帖安装的OpenCV同时支持这两个版本。 继续阅读Ubuntu 16.04编译安装OpenCV(Python)

OpenCV-Python:图像的几何变换(平移、旋转、仿射变换等)

缩放变换

缩放就是改变图像的大小,使用cv2.resize()函数。图像的大小可以手动指定,也可以使用缩放比例。cv2.resize()支持多种插值算法,默认使用的是cv2.INTER_LINEAR(不管放大和缩小)。缩小最适合使用:cv2.INTER_AREA,放大最适合使用:cv2.INTER_CUBIC (慢) 或 cv2.INTER_LINEAR。

继续阅读OpenCV-Python:图像的几何变换(平移、旋转、仿射变换等)

OpenCV-Python:颜色空间转换(简单根据颜色追踪对象)

颜色空间转换指从一种图片表示格式转为另一种,如:BGR \leftrightarrow Gray,BGR \leftrightarrow HSV等。

颜色空间转换

在OpenCV中提供了150多种格式转换,在这里介绍两种使用最广的:BGR \leftrightarrow Gray 和 BGR \leftrightarrow HSV。颜色格式转换使用cv2.cvtColor(input_image, flag),flag决定转换类型。 BGR \rightarrow Gray,falg为cv2.COLOR_BGR2GRAY;BGR \rightarrow HSV,flag为cv2.COLOR_BGR2HSV;使用如下代码查看更多flag:

注:HSV的三个分量:色调(H)范围0->179,饱和度(S)范围0->255,明度(V)范围0->255。不同的软件使用不同的比例。

继续阅读OpenCV-Python:颜色空间转换(简单根据颜色追踪对象)

OpenCV-Python:图像的算数操作

介绍在OpenCV中图像的算数操作:加、减、按位操作等。

图像加法

可以用cv2.add()函数对两个图像进行相加操作,也可以用NumPy:res = img1 + img2。相加的两个图片必须是同一类型,或有一个图片有一个channel。

继续阅读OpenCV-Python:图像的算数操作