四、色彩空间

一、色彩空间

1、什么是色彩空间?
色彩空间是定义的颜色范围。

2、常见的色彩空间有哪些?
①RGB
在这里插入图片描述在这里插入图片描述

②HSV
在这里插入图片描述
在OpenCV中,Hue的值为0~180°,之所以不是360°是因为,8位存不下,故进行归一化操作,使得Hue取值在0 ~180°,可以通过一个字节来存储。
③HIS
Hue:色调
Intensity:强度
Saturation :饱和度
④YCrCb
主要在早期的人的皮肤检测方面应用
⑤YUV
Android开发中常用,Linux的色彩空间

3、色彩空间之间的相互转化

import cv2def color_space(image):gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("gray",gray)hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)cv2.imshow("hsv",hsv)yuv = cv2.cvtColor(image,cv2.COLOR_BGR2YUV)cv2.imshow("yuv",yuv)ycrcb = cv2.cvtColor(image,cv2.COLOR_BGR2YCrCb)cv2.imshow("ycrcb",ycrcb)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR
cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image",src)
t1 = cv2.getTickCount()
color_space(src)
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#显示当前运行时间
print("time:%s ms"%(time*1000))#输出当前运行时间单位为ms
cv2.waitKey(0)cv2.destroyAllWindows()

运行效果图如下:在这里插入图片描述
在这里插入图片描述

二、对视频中的目标(青色水杯)进行跟踪

在这里插入图片描述
cv2.inRange(hsv,lowerb=lower,upperb=upper):对HSV颜色过滤,lowerb和upperb需要查上面的表进行颜色转换
方法一:目标物体白色,其余黑色

import cv2
import numpy as npdef extrace_object():capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame = capture.read()if ret==False:breakhsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)lower = np.array([78,43,46])#由于水杯是青色的故需要根据表格选出hsv对应的min值upper = np.array([99,255,255])#由于水杯是青色的故需要根据表格选出hsv对应的max值mask = cv2.inRange(hsv,lowerb=lower,upperb=upper)cv2.imshow("video",frame)cv2.imshow("mask",mask)c = cv2.waitKey(40)if c==27:breakt1 = cv2.getTickCount()
extrace_object()
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#显示当前运行时间
print("time:%s ms"%(time*1000))#输出当前运行时间单位为ms
cv2.waitKey(0)cv2.destroyAllWindows()

效果图如下:在这里插入图片描述
在这里插入图片描述
方法二:目标物体颜色保留,其余黑色

import cv2
import numpy as npdef extrace_object():capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame = capture.read()if ret==False:breakhsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)lower = np.array([78,43,46])#由于水杯是青色的故需要根据表格选出hsv对应的min值upper = np.array([99,255,255])#由于水杯是青色的故需要根据表格选出hsv对应的max值mask = cv2.inRange(hsv,lowerb=lower,upperb=upper)dst = cv2.bitwise_and(frame,frame,mask=mask)cv2.imshow("video",frame)#cv2.imshow("mask",mask)cv2.imshow("dst",dst)c = cv2.waitKey(40)if c==27:breakt1 = cv2.getTickCount()
extrace_object()
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#显示当前运行时间
print("time:%s ms"%(time*1000))#输出当前运行时间单位为ms
cv2.waitKey(0)cv2.destroyAllWindows()

效果图如下:在这里插入图片描述
在这里插入图片描述

三、对彩色图像三颜色通道进行分割显示并合并显示

cv2.split(src):对src三颜色通道的彩色图像进行分割
cv2.merge([b,g,r]):将b,g,r三个单颜色通道图像进行合并

import cv2
import numpy as npsrc = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR
cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image",src)
t1 = cv2.getTickCount()b,g,r = cv2.split(src)#拆分彩色通道图像
cv2.imshow("blue",b)
cv2.imshow("green",g)
cv2.imshow("red",r)src = cv2.merge([b,g,r])#将拆分的三个单颜色通道进行合并还原
src[:,:,0]=0#将第0个颜色通道,即B颜色通道赋值为0
cv2.imshow("changed",src)t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#显示当前运行时间
print("time:%s ms"%(time*1000))#输出当前运行时间单位为ms
cv2.waitKey(0)cv2.destroyAllWindows()

效果图如下:在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FIFA的完整形式是什么?

国际足联:国际足球联合会 (FIFA: Federation Internationale de Football Association) FIFA is an abbreviation of the "Federation Internationale de Football Association" in French. It is also known as the International Federation of Associa…

【C++ grammar】重载、内联、变量作用域、带默认参数的函数

目录1、变量的作用域1. 变量的作用域分类2. Unary Scope Resolution (一元作用域解析运算符)2、重载函数3、带有默认参数值的函数4、重载函数 VS 带有默认参数值的函数5、内联函数(Inline Function)1. 普通函数的优缺点2. 使用内联函数3. 定义内联函数4.…

五、像素运算

一、相关概念 1、算术运算 Ⅰ加减乘除 Ⅱ调节亮度 Ⅲ调整对比度 2、逻辑运算 Ⅰ与或非 Ⅱ遮罩层控制 二、图像算术运算(加减乘除均值方差) 其中图像的加减乘除需要保证两张图像的大小相同 import cv2 import numpy as npdef add(src1,src2):dst cv2.add(src1,src2)cv2.im…

Chaikin Curve(球面插值)

在两条折线间完成平滑的过渡是 用画布做UI 或者做类似地图编辑器一类的工作的 很常见的任务。 怎么样化方为圆是决定工作效率的很重要的因素。(当需要编辑的曲线多起来, 复杂起来的时候,这会是件相当繁重的工作) 最容易想到的莫非…

六、ROI和泛洪填充

一、ROI ROI:region of interest,即感兴趣区域。 一般主要通过numpy来获取ROI 将某区域转变为灰色图片再覆盖原图像 import cv2 import numpy as npsrc cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg") cv2.imshow(&quo…

django 静态数据_如何在Django中使用静态数据?

django 静态数据Static Data means those data items that we cannot want to change, we want to use them as it is like audio, video, images, files etc. 静态数据是指我们不想更改的数据项,我们想像音频,视频,图像,文件等那…

Leetcode226. 翻转二叉树(递归、迭代、层序三种解法)

目录题目1、层序法:2、递归法:1、先序遍历(中左右)2、后序遍历(左右中)3、递归中序遍历为什么不行(左中右)3、迭代法:1、先序遍历2、中序遍历3、后序遍历为什么迭代法的中…

一款jQuery立体感动态下拉导航菜单特效

一款jQuery立体感动态下拉导航菜单特效,鼠标经过,在菜单栏上方下拉出一个背景图片,效果十分不错的一款jquery特效。 对IE6都是兼容的,希望大家好好研究研究。 适用浏览器:IE6、IE7、IE8、360、FireFox、Chrome、Safari、Opera、傲…

七、模糊操作

一、模糊操作基本原理 1,基于离散卷积 2,定义好每一个卷积核 3,不同卷积核得到不同的卷积效果 4,模糊是卷积的一种表象 二、1*3卷积核举例 每次右移一格,进行对应相乘再求和。1*3的卷积核左右两边的元素并没有处理而…

LeetCode 100. 相同的树 思考分析

给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true 示例 2: 输入: 1 1 / 2 2 [1,2], [1,null,2]输…

八、边缘保留滤波(EPF)

一、概念 边缘保留滤波(EPF,edge preserving filtering) 二、高斯双边 cv2.bilateralFilter(image,0,100,15)100为差异,15为周围的区域 import cv2 import numpy as npdef bilateralFilter(image):dst cv2.bilateralFilter(image,0,100,15)cv2.imshow(bilater…

九、图像直方图

一、图像直方图的属性 说白了就是将图像上的各个颜色通道上的像素点的像素值进行统计,例如:像素值为14的像素点个数有几个,进行显示。 图像的像素值取值范围为[0,255],这个范围也成为直方图的range也就是直方图的横坐标轴 每一个…

BIFR的完整形式是什么?

BIFR:工业和金融重组委员会 (BIFR: Board of Industrial and Financial Reconstruction) BIFR is an abbreviation of the Board of Industrial and Financial Reconstruction. It was an organization of the Government of India and a branch of the Department …

LeetCode 101. 对称二叉树 思考分析

题目 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1/ 2 2 / \ / 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1/ 2 2 \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个…

直方图反向投影

通过直方图反向投影,根据目标衣服颜色的特征来进行定位 cv2.calcHist([roi_hsv],[0,1],None,[32,48],[0,180,0,256])其中[32,48]表示bin的个数,可以修改,当然范围越小越精确 import cv2 import numpy as np from matplotlib import pyplot …

LeetCode 二叉树、N叉树的最大深度与最小深度(递归解)

目录104. 二叉树的最大深度559. N叉树的最大深度111. 二叉树的最小深度之前的笔记中,已经用层序遍历解决过这个问题了现在试着用深度的解法去求解104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径…

十、模板匹配

一、概念 模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域。 需要首先给定一个模板图像A,和一个待检测图像B。 在待检测图像B上,从左往右,从上往下计算待检测图像B和模板图像A所重叠的匹配度,匹配度越高则两者相同的可…

基于WF的意见征集4(浅析)

接口项目&#xff1a;IClass&#xff08;项目名称&#xff09; HTHuiFuusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Workflow.Runtime;using System.Workflow.Activities;namespace IClass{ /// <summary> /…

那些VisualStudio隐藏的调试功能

VisualStudio是一个强大的调试工具&#xff0c;里面很多隐藏功能少有人问津&#xff0c;但是在特定场景可以节省你很多时间&#xff0c;本文主要介绍一些VisualStudio调试相关的隐藏功能&#xff0c;欢迎大家补充。 运行到指针(Run to cursor) 大多数人用Visual Studio在调试程…

十一、图像二值化

一、二值图像 其实就是把图像转换为只有黑白的两种颜色图像&#xff0c;即像素值非零即一 三角阈值二值化 对一个图像进行操作&#xff0c;获取图像的直方图&#xff0c;找到波峰和波谷进行连线设为线段A&#xff0c;每个点做有关线段A的垂线垂足在线段A上&#xff0c;最后将…