opencv实现图像颜色空间转换

opencv常用的样色空间包括RGB, HSV和YUV等。RGB颜色空间是基于三基色原理二形成的,常用于图像显示系统中;HSV描述的色度,饱和度,亮度这些表示颜色得方法,常用于描述色彩变化;YUV是通过亮度和色度来描述颜色,色度由UV通道组合而成。

opencv提供cvtColor(inputArray src, outputArray dst, int code, int dstCn = 0)

src是输入图像原,可以是8位CV_8U或者16位CV_16U无符号整形,或者单精度浮点数CV_32F;code是颜色空间转换模式,常用的有有CV_RGB2GRAY, CV_RGB2HSV,CV_BGR2HLS以及CV_BGR2YCrCb等。dstCn是目标图像的多通道设置,设置为0表示通道数自动从src和code处获取。

opencv中默认的通道BGR,因此在标准的24bit颜色空间图像中最先存储字节的是蓝色部分,其次是绿色,最后字节存放红色部分。cvtColor中对输入原图像有严格要求,对于非src要求类型。输入图像要归一化到相应类型中。在大多数场景下,为了更好的利用32为图像的信息,一般在操作之前要先转到src要求的类型,完成操作以后在转会。

需要说明的是,在进行颜色空间转换时,RGB各个通道的范围应当根据实际需要来进行归一化,如RGB转到LUV通道时,需要将RGB归一化为32为浮点数,及各个通道的值变化范围是0到1;代码如下:

img *= 1./255;
cvtColor(img, img,CV_BGR2Luv);

例子RGB转HSV

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
  cv::Mat srcImage = cv::imread("C:\\Users\\LP\\Desktop\\C++\\ConsoleApplication4\\ConsoleApplication4\\1.jpg");
  if (srcImage.empty())
  {
    return -1;
  }
  cv::imshow("原图像", srcImage);
  cv::Mat image_hsv, image_H, image_S, image_V, image_col;
  //HSV颜色空间转换
  cv::cvtColor(srcImage, image_hsv, CV_BGR2HSV);
  cv::imshow("image_hsv", image_hsv);
  //YCrCb颜色空间转换
  cv::cvtColor(srcImage, image_col, CV_BGR2YCrCb);
  cv::imshow("image_col", image_col);
  //HLS颜色空间转换
  cv::cvtColor(srcImage, image_col, CV_BGR2HLS);
  cv::imshow("iamge_HLS", image_col);
  //Lab颜色空间转换
  cv::cvtColor(srcImage, image_col, CV_BGR2Lab);
  cv::imshow("image_Lab", image_col);
  //分离HSV各个通道
  std::vector<cv::Mat> hsvChannels;
  cv::split(image_hsv, hsvChannels);
  //0通道为H分量,1通道为S分量,2通道为V分量
  image_H = hsvChannels[0];
  image_S = hsvChannels[1];
  image_V = hsvChannels[2];
  //分别显示各通道图像
  cv::imshow("image_H", image_H);
  cv::imshow("image_S", image_S);
  cv::imshow("image_V", image_V);

  cv::waitKey(0);
  return 0;
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • opencv转换颜色空间更改图片背景

    本文实例为大家分享了opencv转换颜色空间更改图片背景的具体代码,供大家参考,具体内容如下 思路: 1.将BGR转换为HSV颜色空间 2.设置掩模 3.位运算 这里以更改摩托罗拉logo背景为例,图片在必应图片搜索得知,具体代码如下: import numpy as np import cv2 from imageio import imread import matplotlib.pyplot as plt def show(img,winname = "img"): cv2.na

  • opencv实现图像颜色空间转换

    opencv常用的样色空间包括RGB, HSV和YUV等.RGB颜色空间是基于三基色原理二形成的,常用于图像显示系统中:HSV描述的色度,饱和度,亮度这些表示颜色得方法,常用于描述色彩变化:YUV是通过亮度和色度来描述颜色,色度由UV通道组合而成. opencv提供cvtColor(inputArray src, outputArray dst, int code, int dstCn = 0) src是输入图像原,可以是8位CV_8U或者16位CV_16U无符号整形,或者单精度浮点数CV_32

  • 超详细注释之OpenCV操作图像平移转换

    这篇博客将介绍如何使用Python,OpenCV对图像进行平移转换.平移是图像沿x轴和y轴的移动.使用平移,可以将图像上下左右移动,以及上述任意组合.要使用OpenCV平移图像,只需3步: 从磁盘加载图像 定义仿射变换矩阵 应用cv2.warpAffine仿射函数来执行平移 1. 效果图 用了颖宝明兰的新娘图片来演示效果~,喜欢这张图的原因,是这里有一首经典的催妆诗, <催妆诗> 金车欲上怯东风,排云见月醉酒空. 独自仙姿羞半吐,冰瓷露白借微红. 原图如下: 向右向下平移图 VS 向上向左平移

  • opencv中颜色空间转换函数cv2.cvtColor()使用

    opencv中有多种色彩空间,包括 RGB.HSI.HSL.HSV.HSB.YCrCb.CIE XYZ.CIE Lab8种,使用中经常要遇到色彩空间的转化,以便生成mask图等操作. 可以使用下面的色彩空间转化函数 cv2.cvtColor( )进行色彩空间的转换: HSV 表示hue.saturation.value image_hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV) 用这个函数把图像从RGB转到HSV夜色空间,注意是BGR2HSV,因为在ope

  • opencv-python 读取图像并转换颜色空间实例

    我就废话不多说了,直接上代码吧! #-*- encoding:utf-8 -*- ''' python 绘制颜色直方图 ''' import cv2 import numpy as np from matplotlib import pyplot as plt def readImage(): #读取图片 B,G,R,返回一个ndarray类型 #cv2.IMREAD_COLOR # 以彩色模式读入 1 #cv2.IMREAD_GRAYSCALE # 以灰色模式读入 0 img = cv2.im

  • python实现RGB与YCBCR颜色空间转换

    目录 前言: 1.灰度值和亮度的关系 2.RGB颜色空间与颜色控制 3.YCbCr颜色空间及与RGB的变换关系 前言: 人类如何感知或者理解颜色是个非常复杂的问题,本文不讨论如何从生物学或者心理学角度来分析颜色,而是分析“数值大小如何影响颜色”.文中主要介绍了RGB与YCbCr颜色空间概念的与变换关系. 1.灰度值和亮度的关系 人类能够从灰度图像中获取理解场景需要的大部分信息,所以看黑白电视机并不会严重影响人对视频中场景的理解.图像的亮度和像素值成正比,如果需要增加图像的亮度,比如从黑色逐渐过渡

  • OpenCV实战之OpenCV中的颜色空间

    目录 1 不同的色彩空间 1.1RGB颜色空间 1.2 Lab色彩空间 1.3  YCrCb颜色空间 1.4 HSV颜色空间 2 如何使用这些颜色空间进行分割 2.1 获取特定颜色的颜色值 2.2 应用分段阈值 在本教程中,我们将了解计算机视觉中常用的色彩空间,并将其用于基于颜色分割.我们还将用C ++和Python共享演示代码. 在进行色彩分割时很多项目没有考虑到不同光照条件的影响,会严重影响结果.在许多计算机视觉应用中遇到这个问题,涉及基于颜色的分割,如肤色检测,交通灯识别等.所以构建一个强

  • opencv+图像处理(Image Processing in OpenCV) 4-0改变颜色空间的过程

    目录 0.本节涉及的opencv新函数 1.彩色的形成 2.彩色空间 3.为什么需要选择合适的彩色空间 4.如何选择合适的彩色空间 5.常用的彩色空间 RGB 6.变换彩色空间数学公式 7.opencv变换彩色空间代码+注释+效果 本专栏代码地址https://github.com/xiawei20161308104/xv_opencv_tutorials本节代码路径xv_opencv_tutorials/ImageProcessinginOpenCV/changing_colorspaces.

  • Python+OpenCV实现图像融合的原理及代码

    根据导师作业安排,在学习数字图像处理(刚萨雷斯版)第六章 彩色图像处理 中的彩色模型后,导师安排了一个比较有趣的作业: 融合原理为: 1 注意:遥感原RGB图image和灰度图Grayimage为测试用的输入图像: 2 步骤:(1)将RGB转换为HSV空间(H:色调,S:饱和度,V:明度): (2)用Gray图像诶换掉HSV中的V: (3)替换后的HSV转换回RGB空间即可得到结果. 书上只介绍了HSI彩色模型,并没有说到HSV,所以需要网上查找资料. Python代码如下: import cv

  • python Opencv计算图像相似度过程解析

    这篇文章主要介绍了python Opencv计算图像相似度过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.相关概念 一般我们人区分谁是谁,给物品分类,都是通过各种特征去辨别的,比如黑长直.大白腿.樱桃唇.瓜子脸.王麻子脸上有麻子,隔壁老王和儿子很像,但是儿子下巴涨了一颗痣和他妈一模一样,让你确定这是你儿子. 还有其他物品.什么桌子带腿.镜子反光能在里面倒影出东西,各种各样的特征,我们通过学习.归纳,自然而然能够很快识别分类出新物品.

  • 浅谈python opencv对图像颜色通道进行加减操作溢出

    由于opencv读入图片数据类型是uint8类型,直接加减会导致数据溢出现象 (1)用Numpy操作 可以先将图片数据类型转换成int类型进行计算, data=np.array(image,dtype='int') 经过处理后(如:遍历,将大于255的置为255,小于0的置为0) 再将图片还原成uint8类型 data=np.array(image,dtype='uint8') 注意: (1)如果直接相加,那么 当像素值 > 255时,结果为对256取模的结果,例如:(240+66) % 256

随机推荐