python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

最近调试程序的时候,发现要保存的图片颜色与原图片有色差(显示图像变蓝),郁闷良久,终于发现问题,望诸君避坑。

🧸在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象。
🎯原因:opencv的接口使用BGR,而matplotlib.pyplot 则是RGB模式。
单独使用图像是正常的,联合使用显示是不正常的。
下面我们根据程序结合结果来看:

原图:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

; 1.程序源码

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

img = cv.imread('road.jpg')
img2 = plt.imread('road.jpg')
img3 = cv.cvtColor(img, cv.COLOR_BGR2RGB)
img4 = cv.cvtColor(img2, cv.COLOR_BGR2RGB)

plt.imshow(img)
plt.savefig('cv_read_plt_show.jpg')
plt.show()

plt.imshow(img2)
plt.savefig('plt_read_plt_show.jpg')
plt.show()

plt.imshow(img3)
plt.savefig('cv_read_plt_show_BGR2RGB.jpg')
plt.show()

plt.imshow(img4)
plt.savefig('plt_read_plt_show_BGR2RGB.jpg')
plt.show()

cv.namedWindow("bgr_image", 0)
cv.resizeWindow("bgr_image", 512, 768)
cv.imshow('bgr_image', img)
cv.imwrite('cv_read_cv_show.jpg',img)

cv.namedWindow("rgb_image", 0);
cv.resizeWindow("rgb_image", 512, 768)
cv.imshow('rgb_image', img2)
cv.imwrite('plt_read_cv_show.jpg',img2)

cv.namedWindow("cv_read_BGR2RGB_image", 0);
cv.resizeWindow("cv_read_BGR2RGB_image", 512, 768)
cv.imshow('cv_read_BGR2RGB_image', img3)
cv.imwrite('cv_read_cv_show_BGR2RGB.jpg', img3)

cv.namedWindow("plt_read_BGR2RGB_image", 0);
cv.resizeWindow("plt_read_BGR2RGB_image", 512, 768)
cv.imshow('plt_read_BGR2RGB_image', img4)
cv.imwrite('plt_read_cv_show_BGR2RGB.jpg', img4)

2.程序运行结果如下:

2.1 Matplotlib显示结果:

2.2.1 CV读取BGR,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

; 2.2.2 Matplotlib读取RGB,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

2.2.3 CV读取BGR转换为RGB,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

; 2.2.4 plt读取RGB,CV转换为RGB,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

2.2OpenCV显示结果:

2.2.1 CV读取BGR,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

; 2.2.2 Matplotlib读取RGB,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

2.2.3 CV读取BGR转换为RGB,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

; 2.2.4 plt读取RGB, CV转换为RGB,显示:

python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

Original: https://blog.csdn.net/qq_41931453/article/details/125908061
Author: 期待686
Title: python中图片读取和保存以及plt.imshow()与cv2.imshow()显示图像颜色错误解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/636617/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • V2X方案之RSU介绍

    目录 V2X方案之RSU RSU背景 RSU特点 RSU安全 传输安全 应用安全 空口安全 OM 安全 设备安全 RSU参数参考 RSU射频性能 适配天线配件 遵循标准 RSU功能…

    人工智能 2023年6月10日
    0101
  • 从零开始搭建ROS移动机器人系列之(三)底层控制硬件

    “ 上一期讲到了机器人机械结构、外部传感器以及ROS部署载体的选择及设计,这一期讲一讲底层控制硬件部分的内容。 “ 目录 单片机控制芯片 电机驱动模块 电机…

    人工智能 2023年6月26日
    0103
  • CART决策树算法的Python实现(注释详细)

    一、CART决策树算法简介 CART(Classification And Regression Trees 分类回归树)算法是一种树构建算法,既可以用于分类任务,又可以用于回归。…

    人工智能 2023年6月15日
    053
  • 哈工大 计算机网络 实验二 可靠数据传输协议(停等协议与GBN协议)

    计算机网络实验代码与文件可见github:计算机网络实验整理实验名称 可靠数据传输协议(停等协议与GBN协议)实验目的:本次实验的主要目的。 理解可靠数据传输的基本原理;掌握停等协…

    人工智能 2023年6月4日
    0125
  • 三维重建公开数据集整理(MVS篇)

    三维重建公开数据集整理(MVS篇),不定期更新。同步到Github仓库:https://github.com/ethan-li-coding/Datasets-of-MVS-rec…

    人工智能 2023年7月27日
    057
  • 目标检测学习笔记——mmdet的mmcv安装

    目录 一、windows下安装mmcv * 1、环境准备 – 安装git 安装visual studio community 2019 安装conda 安装对应版本的c…

    人工智能 2023年7月21日
    068
  • 10x单细胞数据分析之Seurat多样品整合分析

    上一篇10x单细胞数据分析我们介绍了如何用Seurat对单细胞数据进行分群分析,这一篇我们介绍一下多个单细胞样品的分析方法。 测试数据选择Seurat提供的ifnb数据集,其中包含…

    人工智能 2023年7月15日
    088
  • 装饰者模式的练习

    题目:某咖啡店售卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。 [外链图片转存失败,源站可能有…

    人工智能 2023年6月29日
    065
  • 统计信号处理基础 习题解答6-8

    题目 继续习题6-7,我们总是能够将 s 表示为 C 的特征矢量线性组合,这是因为我们总能求出N个线性无关的特征矢量。而且可以证明,由于 C 的对称性,这些特征矢量是正交的。因此,…

    人工智能 2023年6月27日
    076
  • 机器视觉系列(四)——相机部分

    一、工业相机和其他数码相机的区别 工业相机和普通数码相机的区别:①工业相机是工业用品,需要连续长时间运行,所以 在性能可靠性、稳定性、环境稳定、防水、连续运行时间上有明显的优势。工…

    人工智能 2023年7月28日
    052
  • python矩阵和向量乘法总结

    向量之间的乘法 torch.dot 点乘,相同维度的两个向量对应元素相乘再相加 torch.mul 对应元素相乘,结果同a*b例子如下: ; 矩阵与向量的乘法 要求:矩阵的列数=向…

    人工智能 2023年7月21日
    086
  • 3. Matplotlib基础学习库

    1 什么是Matplotlib 是专门用于开发2D图表(包括3D图表) 以渐进、交互式方式实现数据可视化 2 为什么要学习Matplotlib 可视化是在整个数据挖掘的关键辅助工具…

    人工智能 2023年7月17日
    067
  • 【知识图谱】关系抽取与总结展望

    关系抽取 实验介绍 实验原理 * 关系抽取任务 数据预处理 实验步骤 * 数据处理 构建网络模型 模型预测 总结展望 实际应用 * 结构化数据 知识推理 应用领域 参考文献 All…

    人工智能 2023年6月1日
    098
  • 天池比赛——用户情感可视化分析

    天池比赛——用户情感可视化分析 目录 天池比赛——用户情感可视化分析 前言 一、读取数据,查看基本情况并做数据预处理 引入相关库 读取数据,基础分析数据 空值处理,数据映射 对评论…

    人工智能 2023年7月17日
    073
  • Python 时间序列数据平滑去噪 Savitzky-Golay滤波器

    ; 一、引言 一般来说,对时间序列曲线做平滑好处多多,能使得原始时间序列更具备可预测性: 减少噪声对时间序列的影响; 获得除去噪声后的时间序列数据;时间序列平滑后的数据可以用来解释…

    人工智能 2023年7月5日
    052
  • Vue:vue-cli中render函数的作用

    在vue-cli脚手架中的main.js中,模板渲染没有使用teplate进行渲染,而是使用render进行渲染,这是为什么呢?render函数有什么作用吗? 实例展示:解释: 没…

    人工智能 2023年6月27日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球