OpenCV和Matplotlib色彩空间模式不一致的问题

当用OpenCV读取彩色图像时,OpenCV是以(BGR)的顺序存储图像数据的,而Matplotlib是以(RGB)的顺序显示图像的。

可以用下面的程序来证明这一点

import cv2
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('lena_std.tif')
b,g,r = cv2.split(img)
img2 = cv2.merge([r,g,b])
plt.subplot(121);plt.imshow(img)
plt.subplot(122);plt.imshow(img2)
plt.show()

cv2.imshow('bgr image',img)
cv2.imshow('rgb image',img2)
cv2.waitKey(0)
cv2.destroyAllWindows()

程序运行结果如下:

Matplotlib显示结果

OpenCV显示结果

             

参考资料:http://stackoverflow.com/questions/15072736/extracting-a-region-from-an-image-using-slicing-in-python-opencv/15074748#15074748

时间: 2024-10-12 21:16:56

OpenCV和Matplotlib色彩空间模式不一致的问题的相关文章

matplotlib交互模式与pacharm单独Figure设置

matplotlib交互模式与pacharm单独Figure设置 觉得有用的话,欢迎一起讨论相互学习~Follow Me Matpotlib交互模式 在运行python程序时有时候需要生成以下的 动态图模式 来显示程序运行的结果 此时需要使用matplotlib的 交互模式 ,在Ipython中时默认使用交互模式的. 在pycharm中使用 import matplotlib.pyplot as plt plt.ion() .... plt.ioff() plt.show() 框架来开启 交互模

python OpenCV 使用matplotlib显示图像

# -*- coding: utf-8 -*- import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('test.jpg', 0) plt.imshow(img, cmap='gray', interpolation='bicubic') plt.xticks([]), plt.yticks([]) plt.show() 彩色图像使用OpenCV加载时是BGR模式,但是使用matpl

opencv和matplotlib库图像读写显示对比和总结

图片格式: bmp 全称:Bitmap 不压缩 png 全称:Portable Network Graphics 无损压缩 jpg 全称:Joint Photographic Experts Group 有损压缩 opencv(python)中图像读写显示: import cv2 as cv new_img = cv.imread('baby.png') # 文件大小:362KB # bmp cv.imwrite('img_bmp.bmp',new_img) # 文件大小:768KB # jpg

WebServers发布提示oracle客户端模式不一致

问题:System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发BadImageFormatException.如果在安装32 位Oracle 客户端组件的情况下以64 位模式运行,将出现此问题.---> System.BadImageFormatException: 试图加载格式不正确的程序. (异常来自HRESULT:0x8007000B) 分析:提示很明显在64 bits的环境下使用了32位的oracle客户端组件.但是我们检查oracle是

[转载]转载,opencv轮廓查找,匹配以及特征提取,实例

已有 9450 次阅读 2012-3-15 20:50 |系统分类:科研笔记|关键词:opencv 轮廓 轮廓的查找.表达.绘制.特性及匹配(How to Use Contour? Find, Component, Construct, Features & Match) 作者:王先荣 前言    轮廓是构成任何一个形状的边界或外形线.前面讲了如何根据色彩及色彩的分布(直方图对比和模板匹配)来进行匹配,现在我们来看看如何利用物体的轮廓.包括以下内容:轮廓的查找.表达方式.组织方式.绘制.特性.匹

在终端模式和网络字节顺序的大小

一.为什么会出现大小端模式? 不同的cpu採用的大小端模式不一致. X86是小端模式.而KEIL C51则为大端模式.非常多的ARM.DSP都为小端模式. 有些ARM处理器还能够由硬件来选择是大端模式还是小端模式. 二.大小端模式的不同带来的问题是什么?怎样解决? 假设存在数据网络传输.假设大小端模式不一致,假设不经过转换.必定会导致数据不致,出现错误. 解决方法:统一将网络上传输的字节序採用同一种模式(大家都知道的),这样收发数据时,就会依据主机相应的模式是否和网络字节相应的模式一致,来推断是

能把opencv的源码也进行调试吗?(需要pdb文件才行)

能把opencv的源码也进行调试吗?(需要pdb文件才行)1.我是用的Qt Creator,然后"工具\选项\调试器\概要\源码路径映射"中,选择"添加Qt源码",目标路径是Qt的源码路径,比如是"C:\Qt\Qt5.7.0\5.7\Src", 源路径是Qt Creator自动补充的.2.按照这种方法也可以将VC CRT源码给添加进来,目标路径是VC CRT的源码路径,比如是"C:\Program Files (x86)\Microso

浏览器兼容模式(转)

三种模式 首先我们要知道,为什么会有这么多模式.其实这是个历史遗留问题,在浏览器大战时期,网景浏览器(Netscape Navigator)和微软的IE浏览器(Microsoft Internet Explorer)对网页分别有不同的实现方式,那个时候的网页要针对这两种浏览器分别开发不同的版本.而到了W3C制定标准之后,这些浏览器就不能继续使用这种页面了,因而会导致大部分现有站点都不能使用.基于这个原因,浏览器才引入两种模式来处理一些遗留的站点. 现在的浏览器排版引擎支持三种模式:怪异(Quir

深入理解浏览器兼容性模式

摘要:关于各种浏览器模式,网上已经有许多文档和资料了,但是很少有能够完全将几个概念阐述清楚的.大部分的资料稍显过时,有些内容可能已经不再适用了.本文中笔者将尽可能将几个概念阐述清楚,并去掉一些过时的内容,仅保留必要的干货. 想必你一定知道浏览器有个标准(Standards)模式和一个怪异(Quirks)模式,或许你还听说过有个"准标准(Almost Standards)"模式.而当你打开Internet Explorer的时候,又看到了什么浏览器模式.文档模式,还有什么兼容性视图等等.