关于cv2.cvtColor函数的一些小小的思考
众所周知,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函数的一些小小的思考相关推荐
- python颜色函数_颜色空间及cv2.cvtColor 转换函数
图像处理时,有些图像可能在 RGB 颜色空间信息不如转换到其它颜色空间更清晰. 这里整理下关于颜色空间的知识,以及 python-opencv 的实现. 图像处理中有多种色彩空间,例如 RGB.HLS ...
- python中opencv中inrange用法_python-opencv中的cv2.inRange函数
本次目标是将一副图像从rgb颜色空间转换到hsv颜色空间,颜色去除白色背景部分 具体就调用了cv2的两个函数,一个是rgb转hsv的函数 具体用法 hsv = cv2.cvtColor(rgb_ima ...
- Opencv中除了cv2.cvtColor彩色图转灰度图之外的其他6种方法
文章目录 1.参考文章: 2.公式集成: 3.代码实现: 4.实验结果: 1.参考文章: https://mp.weixin.qq.com/s/jqVVZbZZRIqVt_Fs7HiUkg 2.公式集 ...
- python-opencv中的cv2.inRange函数
opencv api https://docs.opencv.org/master/ python-opencv中的cv2.inRange函数 原创hjxu2016 最后发布于2017-09-04 ...
- python【Opencv计算机视觉库】opencv模块cv2常用函数用法(全)
文章目录 CV2实践所用到的图片 1.简单读写 2.图片翻转 3.色彩变换 4.给图片加文本 5.绘图 6.图像的表示 CV2实践所用到的图片 bug.png 1.简单读写 import cv2# 读 ...
- 计算机视觉开源库OpenCV之边缘检测cv2.canny()函数
函数原型 edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 参数解释 im ...
- 批量实现 cv2.cvtColor(images, cv2.COLOR_GRAY2RGB)
背景:我想在一批灰度图像上画彩色的框,那么首先需要对灰度图转为 RGB,但是 RGB 信息已经损失了,所以只能对通道复制 3 份,变成彩色的三通道,这里使用 OpenCV 的 cv2.cvtColor ...
- pythoncv2模块详细介绍_【Opencv】【Python】Python中opencv模块cv2一些函数用法及简介...
前言 最近在做卡片上的数字识别.调用caffe模块,直接用的mnist模型,不过这篇文章不讲caffe. 需要先对图片进行一系列预处理,把卡片上的数字分离出来,有点OCR的感觉. 我把这次使用到的所有 ...
- opencv二值化的cv2.threshold函数
(一)简单阈值 简单阈值当然是最简单,选取一个全局阈值,然后就把整幅图像分成了非黑即白的二值图像了.函数为cv2.threshold() 这个函数有四个参数,第一个原图像,第二个进行分类的阈值,第三个 ...
最新文章
- mysql 5.5 declare_MySQL5新语句declare的用法
- greenplum客户端工具_如何从Teradata迁移到Greenplum(上篇)
- Django框架之DRF 认证组件源码分析、权限组件源码分析、频率组件源码分析
- hello-world
- mxGraph实现按住ctrl键盘拖动图形实现复制图形功能
- 内部类、抽象类、接口基本知识详解
- 密码学原理与实践第三版pdf_云计算原理与实践PDF电子书下载
- html文件很大,webpack打包之后的文件过大如何解决
- Debian 项目领导人职位已有三位侯选者
- Find Any File for Mac(本地文件搜索查找工具)
- java 明华读卡器_Java调用明华RF读写器DLL文件过程解析
- 【安全资讯】阿里巴巴遭遇网络爬虫,泄露11.8亿条淘宝个人信息
- Python:SEIR传染病模型
- 【零基础学Python】Day10 Python解释器
- 微信小程序帮你赚到第一桶金
- Android计步模块(类似微信运动)
- Tomcat配置完成后打不开localhost网页解决方法
- 什么是ThreadLocal ?
- 华为设备DHCP snooping配置
- 计算机网络实验35步骤,计算机网络模拟器实验报告(1).(35页)-原创力文档