opencv---颜色空间转化并实现物体跟踪
一、图像处理的基本操作
因为这是第一篇写opencv的笔记,故先讲讲在python下写opencv的基本操作。总共总结了三点如下:
- 开头一定要加编码声明:-*- coding: utf-8 -*-
- python下记得引入opencv模块:import cv2
- 要知道如何读取并展示图片,代码如下:
# -*- coding: utf-8 -*-
import cv2
import numpy as np
name1=cv2.imread(图片名称,如何读取)#读取图片
cv2.imshow(窗口名字,name1)#展示图片
cv2.waitKey()#这是一个键盘绑定函数,只需记到在cv2.imshow后一定要加上这句.
cv2.destoryAllWindows()
二、颜色空间转化
当我们读取完一张图片,一般情况下它都是BGR模式。那么什么是BGR模式呢?总所周知,色彩中不能再分解的基本色称之为原色,原色可以合成其他的颜色,而其他颜色却不能还原出本来的色彩。我们通常说光的三原色,即红、绿、蓝,它们按不同比例的相互混合是可以变成其他所有颜色。不知道你们用过Photoshop没有,里面的调色板就是依靠这个BGR原理。
白色:RGB(255,255,255)
黑色:RGB(0,0,0)
红色:RGB(255,0,0)
绿色:RGB(0,255,0)
蓝色:RGB(0,0,255)
青色:RGB(0,255,255)
紫色:RGB(255,0,255)
当然颜色模式不止只有BGR一种,在这里我再向大家介绍一种模式,它叫HSV。咋一听,大家是不是以为是在讲病毒呢?哈哈,这只是恰巧重名而已,大家莫慌。HSV(Hue,Saturation,Value)是根据颜色的直观特性由A.R.Smith在1978年创建的一种颜色空间,也称六角锥体模型。这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。HSV对用户来说是一种直观的颜色模型,它与BGR模式有很大的不同。Photoshop也有相似的模式,如下图所示;
色调:用角度度量,取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;
饱和度:取值范围为0.0~1.0,值越大,颜色越饱和;
亮度:取值范围为0(黑色)~255(白色);
现在向大家介绍一种使颜色模式转化的函数,cv2.cvtColor(input_image,flag)其中第一个参数是目标图片,第二个参数是转化类型,如cv2.COLOR_BGR2GRAY、cv2.COLOR_BGR2HSV.下面这段代码是将一个名为"1,jpg"的图片改为HSV模式.
# -*- coding: utf-8 -*-
import cv2
import numpy as np
a=cv2.imread('1.jpg')#读取一张图片
b=cv2.cvtColor(a,cv2.COLOR_BGR2HSV)#转化为HSV
三、物体跟踪
在我们将一幅图从BGR模式改为HSV后,我们就可以利用这一点来提取带有特定颜色的物体,这是因为在HSV颜色空间中要比在BGR空间中更容易表示一个特定颜色。
# -*- coding: utf-8 -*-
import cv2
import numpy as np
a=cv2.imread('2.jpg')#读取一张图片
b=cv2.cvtColor(a,cv2.COLOR_BGR2HSV)#转化为HSV
lower_blue=np.array([110,50,50])
upper_blue=np.array([130,255,255])#设定蓝色的阈值
mask=cv2.inRange(b,lower_blue,upper_blue)#根据阈值构建掩摸
res=cv2.bitwise_and(b,b,mask=mask)# 对原图像和掩模进行位运算
cv2.imshow('mask',mask)
cv2.imshow('b',b)
cv2.imshow('first',a)
cv2.waitKey()
cv2.destoryAllWindows()
opencv---颜色空间转化并实现物体跟踪的更多相关文章
- (4)opencv在android平台上实现 物体跟踪
最近项目时间很紧,抓紧时间集中精力去研究android平台的opencv里的物体跟踪技术 其他几篇文章有时间再去完善吧 从网上找到了一些实例代码,我想采取的学习方法是研究实例代码和看教程相结合,教程是 ...
- 基于粒子滤波的物体跟踪 Particle Filter Object Tracking
Video来源地址 一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去.一个偶然的机会发现了Rob Hess(http://web.engr.oregonstate.edu ...
- 【图像处理】openCV光流法追踪运动物体
openCV光流法追踪运动物体 email:chentravelling@163.com 一.光流简单介绍 摘自:zouxy09 光流的概念是Gibson在1950年首先提出来的.它是空间运动物体在观 ...
- OpenCV 使用光流法检测物体运动
OpenCV 可以使用光流法检测物体运动,贴上代码以及效果. // opticalflow.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...
- Emgu-WPF 激光雷达研究-移动物体跟踪2
原文:Emgu-WPF 激光雷达研究-移动物体跟踪2 初步实现了去燥跟踪,并用圆点标注障碍物 https://blog.csdn.net/u013224722/article/details/8078 ...
- Emgu-WPF 激光雷达研究-移动物体跟踪
原文:Emgu-WPF 激光雷达研究-移动物体跟踪 接前两篇博客: 激光雷达数据解析并绘制雷达图 https://blog.csdn.net/u013224722/article/details/80 ...
- HMS Core AR Engine 2D图片/3D物体跟踪技术 助力打造更智能AR交互体验
AR技术已经被广泛应用于营销.教育.游戏.展览等场景.通过2D图像跟踪技术和3D物体跟踪技术,用户只需使用一台手机进行拍摄,即可实现海报.卡牌等平面物体以及文物.手办等立体物体的AR效果.尽管近年来2 ...
- OpenCV 3.2 Tracking 物体跟踪
跟踪就是在连续视频帧中定位物体,通常的跟踪算法包括以下几类: 1. Dense Optical Flow 稠密光流 2. Sparse Optical Flow 稀疏光流 最典型的如KLT算法(Kan ...
- opencv学习之旅_绘制跟踪轨迹
如何将运动物体的轨迹画出来 我的想法是先:用CAMSHIFT跟踪物体,这个函数会返回一个track_box,将box的中心提取出来,然后以这个中心在另外的图像上画出来,然后将这张图像处理,提取轮廓,提 ...
随机推荐
- WebSocket实现简易聊天室
前台页面: <html> <head> <meta http-equiv="Content-Type" content="text/html ...
- 【转】CSS实现自适应分隔线的N种方法
1.伪元素+transform:translateX(-100%); 主要原理是设置文本居中text-align: center;,然后给定两个伪元素,分别绝对定位,那么此时伪元素也是跟随着水平居中的 ...
- 关于mybatis的<selectKey>中的keyColumn
<mapper namespace="com.dao.EmployeeDao"> <insert id="insert"> <se ...
- HDU 5428:The Factor
The Factor Accepts: 101 Submissions: 811 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- POJ 1125:Stockbroker Grapevine
Stockbroker Grapevine Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64 ...
- dd if= of= MBR
1.备份分区表信息 sudo fdisk -l >hda.txt #分区表信息重定向输出到文件中 2.备份MBR sudo dd if=/dev/sda of=mbr bs=512 count ...
- zabbix监控一个机器上的多个java进程的jvm
一.监控安装部署 1.1 JVM端口配置 (/bqhexin/tomcat/bin/catalina.sh)在安装的tomcat路径,找到catalina.sh文件. vim编辑并添加: catali ...
- CSS 宽,高,背景设置
width 宽,height 高,background 背景:背景色 background-color:颜色值--英文单词/十六进制/rgb:背景图 background-image:url(‘图片路 ...
- java.lang.SecurityException: Permission denied (missing INTERNET permission?)
ndroid app里试图用HttpUrlConnection获取网络连接,忘记在AndroidManifest清单文件里声明需要用到Internet的权限,运行时报此错误. 解决方法 在Androi ...
- 沙龙报名 | 京东云DevOps——自动化运维技术实践
随着互联网技术的发展,越来越多企业开始认识DevOps重要性,在企业内部推进实施DevOps,期望获得更好的软件质量,缩短软件开发生命周期,提高服务稳定性.但在DevOps 的实施与落地的过程中,或多 ...