众所周知,python-opencv默认使用的是BGR编码,也就是说,在我们读取一张图片时会偏蓝。如下图所示:

又众所周知,我们可以使用cv2.cvtColor函数对图片进行一个转换
在使用cv2.cvtColor(img, cv2.COLOR_BGR2RGB)后可以得到正常的图像

但最近在做一个小项目的时候,发现还是有点小小不对。

1. 究竟是如何转换的

本来以为python-opencv是针对颜色改变效果的,即无论使用多少次cv2.cvtColor(img, cv2.COLOR_BGR2RGB),最终的效果都是正常的RGB效果。但在使用两次后,图片的效果会转为BGR编码的形式。

同时,通过资料的阅读可以发现,通过数组的改变也可将编码格式改变

也就是说,python-opencv针对编码格式的改变,仅仅只是机械的将相关数组进行了交换,而非针对颜色。即每次使用多少次cv2.cvtColor(img, cv2.COLOR_BGR2RGB),都会将原本的0,1,2图层顺序转为2,1,0

import matplotlib.pyplot as plt
import numpy as np
import cv2img = cv2.imread('填图片路径')
# 方法1:通过数组
fig = plt.figure(figsize=(10, 6))
ax1 = fig.add_subplot(131)
ax2 = fig.add_subplot(132)
ax3 = fig.add_subplot(133)
ax1.imshow(img[:, :, np.array([2, 1, 0])])
# idea2:use opencv‘s function
img_change1 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
ax2.imshow(img_change1)
img_change2 = cv2.cvtColor(img_change1, cv2.COLOR_BGR2RGB)
ax3.imshow(img_change2)
plt.show()

2. 实时图像是否依旧是BGR编码

调用笔记本自带的相机就可发现,实时的视频除了左右是相反的,其余都是正常的

import cv2cap = cv2.VideoCapture(0)while True:ret, frame = cap.read()# frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)frame = cv2.flip(frame, 1)# frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)cv2.imshow("test", frame)cv2.waitKey(1)

以上仅为本人对于cv2.cvtColor函数的一些小小的思考,非常基础,大佬见谅。

关于cv2.cvtColor函数的一些小小的思考相关推荐

  1. python颜色函数_颜色空间及cv2.cvtColor 转换函数

    图像处理时,有些图像可能在 RGB 颜色空间信息不如转换到其它颜色空间更清晰. 这里整理下关于颜色空间的知识,以及 python-opencv 的实现. 图像处理中有多种色彩空间,例如 RGB.HLS ...

  2. python中opencv中inrange用法_python-opencv中的cv2.inRange函数

    本次目标是将一副图像从rgb颜色空间转换到hsv颜色空间,颜色去除白色背景部分 具体就调用了cv2的两个函数,一个是rgb转hsv的函数 具体用法 hsv = cv2.cvtColor(rgb_ima ...

  3. Opencv中除了cv2.cvtColor彩色图转灰度图之外的其他6种方法

    文章目录 1.参考文章: 2.公式集成: 3.代码实现: 4.实验结果: 1.参考文章: https://mp.weixin.qq.com/s/jqVVZbZZRIqVt_Fs7HiUkg 2.公式集 ...

  4. python-opencv中的cv2.inRange函数

    opencv  api https://docs.opencv.org/master/ python-opencv中的cv2.inRange函数 原创hjxu2016 最后发布于2017-09-04 ...

  5. python【Opencv计算机视觉库】opencv模块cv2常用函数用法(全)

    文章目录 CV2实践所用到的图片 1.简单读写 2.图片翻转 3.色彩变换 4.给图片加文本 5.绘图 6.图像的表示 CV2实践所用到的图片 bug.png 1.简单读写 import cv2# 读 ...

  6. 计算机视觉开源库OpenCV之边缘检测cv2.canny()函数

    函数原型 edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 参数解释 im ...

  7. 批量实现 cv2.cvtColor(images, cv2.COLOR_GRAY2RGB)

    背景:我想在一批灰度图像上画彩色的框,那么首先需要对灰度图转为 RGB,但是 RGB 信息已经损失了,所以只能对通道复制 3 份,变成彩色的三通道,这里使用 OpenCV 的 cv2.cvtColor ...

  8. pythoncv2模块详细介绍_【Opencv】【Python】Python中opencv模块cv2一些函数用法及简介...

    前言 最近在做卡片上的数字识别.调用caffe模块,直接用的mnist模型,不过这篇文章不讲caffe. 需要先对图片进行一系列预处理,把卡片上的数字分离出来,有点OCR的感觉. 我把这次使用到的所有 ...

  9. opencv二值化的cv2.threshold函数

    (一)简单阈值 简单阈值当然是最简单,选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像了.函数为cv2.threshold() 这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个 ...

最新文章

  1. mysql 5.5 declare_MySQL5新语句declare的用法
  2. greenplum客户端工具_如何从Teradata迁移到Greenplum(上篇)
  3. Django框架之DRF 认证组件源码分析、权限组件源码分析、频率组件源码分析
  4. hello-world
  5. mxGraph实现按住ctrl键盘拖动图形实现复制图形功能
  6. 内部类、抽象类、接口基本知识详解
  7. 密码学原理与实践第三版pdf_云计算原理与实践PDF电子书下载
  8. html文件很大,webpack打包之后的文件过大如何解决
  9. Debian 项目领导人职位已有三位侯选者
  10. Find Any File for Mac(本地文件搜索查找工具)
  11. java 明华读卡器_Java调用明华RF读写器DLL文件过程解析
  12. 【安全资讯】阿里巴巴遭遇网络爬虫,泄露11.8亿条淘宝个人信息
  13. Python:SEIR传染病模型
  14. 【零基础学Python】Day10 Python解释器
  15. 微信小程序帮你赚到第一桶金
  16. Android计步模块(类似微信运动)
  17. Tomcat配置完成后打不开localhost网页解决方法
  18. 什么是ThreadLocal ?
  19. 华为设备DHCP snooping配置
  20. 计算机网络实验35步骤,计算机网络模拟器实验报告(1).(35页)-原创力文档

热门文章

  1. python基础实例教程 微课版-Python爬虫开发实战教程(微课版)
  2. border-radius 兼容 IE8浏览器
  3. Lake Shore350型低温温度控制器
  4. Python pyspider的安装
  5. mount挂载基础点
  6. openCV+Python实战练习——银行卡号识别
  7. 完成你的第一个智能无人机
  8. Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》(10)
  9. MISRA 2004 VS MISRA 2012
  10. golang坑之 'godoc' 不是内部或外部命令,...