API Definition

我们从 OpenCV官网 的Miscellaneous Image Transformations 上,可查到 cv2.cvtColor 这个api的定义如下:

cvtColor

Converts an image from one color space to another.

C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
Python: cv2.cvtColor(src, code[, dst[, dstCn]]) → dst
C: void cvCvtColor(const CvArr* src, CvArr* dst, int code)
Python: cv.CvtColor(src, dst, code) → None

Parameters:
src – input image: 8-bit unsigned, 16-bit unsigned ( CV_16UC… ), or single-precision floating-point.
dst – output image of the same size and depth as src.
code – color space conversion code (see the description below).
dstCn – number of channels in the destination image; if the parameter is 0, the number of the channels is derived automatically from src and code.

The function converts an input image from one color space to another. In case of a transformation to-from RGB color space, the order of the channels should be specified explicitly (RGB or BGR). Note that the default color format in OpenCV is often referred to as RGB but it is actually BGR (the bytes are reversed). So the first byte in a standard (24-bit) color image will be an 8-bit Blue component, the second byte will be Green, and the third byte will be Red. The fourth, fifth, and sixth bytes would then be the second pixel (Blue, then Green, then Red), and so on.

参数探究

在探究的过程中,我发现 code 参数的 输入类型int 型,于是写代码进行验证:

import cv2
color_types = [cv2.COLOR_BGR2RGB, cv2.COLOR_BGR2GRAY]
for color_type in color_types:print ('{}    {}'.format(color_type, type(color_type)))

结果证明了,原来 code 参数的 输入 不管是cv2.COLOR_BGR2RGBcv2.COLOR_BGR2GRAY,或是其他 颜色转换空间(color space conversion),均是 int 型的:

4    <type 'int'>
6    <type 'int'>

颜色空间转换探究

于是我另外编写了一小段代码,探究哪些整数可以作为 cv2.cvtColorcode 参数的 替代输入值 ,并看看在 转换了颜色空间 后,会生成什么样的图像。

(自己写的实验源码附在文章末尾)

验证得知,以下整数可以作为 cv2.cvtColorcode 参数的 替代输入值

Valid index in cv2.cvtColor:
[0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 127, 128, 129, 130, 131, 132, 133, 134]

效果图

原图像

在进行 转换颜色空间 之前的原图(./pic/origin_pic.jpg):

生成的图像

./generated_pics/1.jpg:

./generated_pics/2.jpg:

./generated_pics/6.jpg:

./generated_pics/32.jpg:

./generated_pics/34.jpg:

./generated_pics/35.jpg:

./generated_pics/36.jpg:

./generated_pics/38.jpg:

./generated_pics/41.jpg:

./generated_pics/53.jpg:

./generated_pics/54.jpg:

./generated_pics/55.jpg:

./generated_pics/69.jpg:

./generated_pics/72.jpg:

./generated_pics/73.jpg:

./generated_pics/79.jpg:

./generated_pics/82.jpg:

./generated_pics/85.jpg:

Code

附上自己写的实验代码:

# coding=utf-8origin_pic = './pic/origin_pic.jpg'
save_folder = './generated_pics'import os
try:os.makedirs(save_folder)
except OSError:passimport cv2
img = cv2.imread(origin_pic)
valid_index = []
for color_type in range(-300, 1000, 1):try:img_new = cv2.cvtColor(img, color_type)cv2.imwrite(os.path.join(save_folder, str(color_type)+'.jpg'), img_new)valid_index.append(color_type)except:pass
print ('Valid index in cv2.cvtColor:\n{}'.format(valid_index))

opencv: 颜色空间转换(cv2.cvtColor) 探究(图示+源码)相关推荐

  1. OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换

    OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换 1. 效果图 2. 原理 2.1 照明条件的重要性 2.2 OpenCV 中的3种颜色空间/模型 2.3 颜色空间的主要用途 3 ...

  2. OpenCV颜色空间转换函数:cv::cvtColor介绍

    OpenCV颜色空间转换函数:cv::cvtColor介绍 Color Conversion Code(颜色转换代码) Enumerator COLOR_BGR2BGRA add alpha chan ...

  3. Python基于OpenCV的图像去雾算法[完整源码&部署教程]

    1.图片识别 2.视频展示 [项目分享]Python基于OpenCV的图像去雾算法[完整源码&部署教程]_哔哩哔哩_bilibili 3.算法原理 图像增强算法常见于对图像的亮度.对比度.饱和 ...

  4. 基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  5. Python基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  6. OpenCV+百度云人脸识别项目及源码

    OpenCV+百度云人脸识别项目及源码 1.需要的硬件环境 虚拟机 带有摄像头的电脑 2.整体项目的框架 用Opencv识别人脸,上传百度云进行识别对比 3.虚拟机上需要装的库 sudo apt-ge ...

  7. python opencv人脸识别考勤系统的完整源码

    这篇文章主要介绍了python opencv人脸识别考勤系统的完整源码,本文给大家介绍的非常详细,希望对大家的学习或工作具有一定的参考借鉴价值. 代码如下: import wx import wx.g ...

  8. 基于Opencv的车距检测系统(源码&教程)

    1.研究背景 对本车前方车辆的识别及距离检测是计算机视觉技术在智能网联汽车中的一个重要内容.要想在错综繁杂的交通环境中实现无人驾驶,对行车环境中其他车辆信息的获取是十分重要的.因此,对本车前方车辆的识 ...

  9. 基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]

    1.视频演示: [项目分享]Python基于OpenCV监控老鼠蟑螂检测系统[完整源码&部署教程]_哔哩哔哩_bilibili 2.图片演示: 3.算法原理: 该博客提出的移动侦测即是根据视频 ...

最新文章

  1. Oracle数据库之子查询
  2. Java开发微信的6个步骤
  3. 计算机专业导论论文2000字,计算机专业导论论文.doc
  4. linux c c 常用的日志库,mslog: 一款超轻量级的C日志库,无需依赖额外的库,测试或移植过的系统有Linux(ubuntu,centos),Windows以及部分嵌入式设备;...
  5. 使用map的find头文件_C++ map的基本操作和使用
  6. python中基本运算符_Python中的基本运算符及示例
  7. springmvc文件下载之文件名下划线问题终极解决方案
  8. jQuery选择器--总结
  9. 【老孙随笔】想学程序设计,先学人生设计!
  10. 携程、快手、平安银行、哈啰出行是怎么落地数据治理和DataOps的?丨DAMS峰会...
  11. OFFICE2013工具栏消失后的处理
  12. kms服务器搭建及测试
  13. 单片机和微型计算机硬件组成的异同,单片机和嵌入式的区别是什么
  14. 如何通过供应商分类来提高采购绩效?
  15. bind dns mysql,linux下bind9.8+dlz+mysql 的dns服务器局域网配置
  16. 怎样成为一个PS高手
  17. 市场调研-全球与中国云业务流程管理(BPM)软件市场现状及未来发展趋势
  18. OpenGL实现碰撞检测与模拟重力效果(简单的物理系统)
  19. 连就连,你我相约定百年。谁若97岁死,奈何桥上等三年!
  20. 《只是为了好玩:Linux之父林纳斯自传》

热门文章

  1. 一大波新款iPhone跟安卓厂商抢夺5G市场
  2. [Android 4.4.2] Oppo Find7 轻装版 MIUI 4.7.4 by crazyi
  3. java定时器(每天定时执行 每月某天执行)
  4. 携程国内机票token
  5. 圆谷英二——特摄电影的开创者
  6. 两个相同放大镜叠加焦距计算
  7. C++ unique_ptr
  8. Cesium三维开发笔记(一、加载三维地球)
  9. 【Cesium :功能】Cesium三维地球标注
  10. Python prep 随想练习 Day7-红黑树