转载自这里

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 型的:

<type 'int'>
<type 'int'>

颜色空间转换探究

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

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

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

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之cvtColor相关推荐

  1. 学习opencv之cvtColor

    opencv 提供了cvtColor()函数,用于在图像中不同的色彩空间进行转换,用于后续处理.在使用cvtColor之前首先需要了解下基本的图像色彩模式,色彩模式决定了打印或显示的图片颜色. 图像色 ...

  2. 关于opencv中cvtcolor函数的code参数用CV_BGR2YUV与CV_BGR2YCrCb的了解

    根据Opencv中cvtcolor函数的源码描述,,参数CV_BGR2YCrCb用的系数为[1868, 9617, 4899, 11682, 9241], 而参数CV_BGR2YUV对应的系数只是将C ...

  3. python opencv cv2.cvtColor()方法(将图像从一种颜色空间转换为另一种颜色空间)(转换成灰度图)

    def cvtColor(src, code, dst=None, dstCn=None): # real signature unknown; restored from __doc__" ...

  4. opencv中cvtcolor()函数用法总结(07)

    还是老习惯,分三步走.第一步,功能说明.第二步,结果图显示,第三步,API详解.第四步,代码展示(注释很详细,保证所有有C++基础的人都可以看懂.) 第一步,功能说明:cvtcolor()函数是一个颜 ...

  5. opencv的cvtColor函数Lab转RGB源码解析及结果截断处理解决

    cvtColor( InputArray src, OutputArray dst, int code, int dstCn=0 ); 这是opencv中色彩转换函数.当由Lab转RGB时,code ...

  6. OpenCV笔记_1.cvtColor()Bayer色彩空间

    近期偷懒调OpenCV函数cvtColor()进行Raw图转RBG时,发现该函数拜耳模式简称与通常不一样,记录一下. 1.cv::cvtColor(),进行色彩空间转换,调用形式如下: void cv ...

  7. opencv 图片边缘渐变_基于OpenCV的图像卡通化

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本期将创建一个类似于Adobe Lightroom的Web应用程序 ...

  8. 图片人脸检测——OpenCV版(二)

    图片人脸检测 人脸检测使用到的技术是OpenCV,上一节已经介绍了OpenCV的环境安装,点击查看. 功能展示 识别一种图上的所有人的脸,并且标出人脸的位置,画出人眼以及嘴的位置,展示效果图如下: 多 ...

  9. TX2+GStreamer+OpenCV读取显示网络摄像头

    参考:https://jkjung-avt.github.io/tx2-camera-with-python/ 参考:http://blog.iotwrt.com/media/2017/08/23/o ...

最新文章

  1. CVPR 2020丨UDVD:用于可变退化的统一动态卷积超分辨率网络
  2. spring-使用配置文件完成JdbcTemplate操作数据库-c3p0
  3. python学习手册笔记——20.迭代和解析
  4. hashcode()方法和equals()方法
  5. [Core]-ARM CORE的发展历史
  6. OpenCV GrabCut分割的实例(附完整代码)
  7. 自媒体时代的贤内助——AI 视频云
  8. 阿里巴巴是如何打通 CMDB,实现就近访问的?
  9. 菜鸟教程python3 mysql_python基础教程使用Python操作MySQL的小技巧
  10. 《统计学习方法》——决策树
  11. Python机器学习:Grid SearchCV(网格搜索)
  12. 使用微软官方工具MediaCreationTool2004重装win10笔记(链接转发)
  13. java中将字符串转换为URL能解析的编码
  14. element 日期选择图标_TimePicker 时间选择器
  15. 大数据平台核心架构图鉴,建议收藏!
  16. 自己动手从零搭建神经网络
  17. OpenGL ES SDK for Android - 3
  18. 同城聚合平台v59.2.0 本地同城 同城信息 同城商家
  19. 简单做一段自己CSGO游戏的视频
  20. css 选父元素,CSS中模拟父元素选择器

热门文章

  1. 成功解决 pycharm一直indexing
  2. 软考高项 - 计算公式汇总整理
  3. 【C语言】Linux 下C程序的内存镜像
  4. Linux-C C语言编译过程
  5. Inventor 二次开发学习指南(入门到精通)
  6. 读取gmsl接口数据,rosbag录制话题
  7. 使用PS去水印的方法
  8. Alluxio代码结构
  9. 安卓开发必备知识体系:Java篇
  10. [ STK ](十一)STK 中搭建铱星星座