使用OpenCV-Python实现图像读入、显示与保存:

# -*- coding: utf-8 -*-import cv2
from matplotlib import pyplot as plt# # 第二个参数,0为灰度模式显示,1为彩色图像,默认值为1
# img0 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', 0)
# img1 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', 1)
# 或者如下:
img0 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', cv2.IMREAD_GRAYSCALE)
img1 = cv2.imread(r'D:\OpenCV_Python\chepai.jpg', cv2.IMREAD_COLOR)# using opencv to show image
cv2.imshow('grayImage', img0)
cv2.imshow('bgrImage', img1)k = cv2.waitKey(0)
if k == 27:         # wait for Esc key to exitcv2.destroyAllWindows()
elif k == ord('s'):cv2.imwrite('chepai_grayimage.jpg', img0)   # wait for 's' key to save and exitcv2.destroyAllWindows()# using matplotlib to show image
# plt.imshow(img0, cmap='gray', interpolation='bicubic')
# plt.xticks([]), plt.yticks([])   # to hide tick values on X and Y axis
# plt.show()

注意: OpenCV 加载的彩色图像是 BGR 模式,但 Matplotib 是 RGB模式。所以彩色图像如果已经被 OpenCV 读入,那它将不会被 Matplotib 正确显示。如下图所示,同一幅彩色图像,由OpenCV读入,左边图像由cv2.imshow()函数显示,为正常颜色;右边图像调用Matplotib的函数显示,颜色明显不对。

由于很多时候要用到matplotlib操作图像,因此就需要解决彩色图像由BGR模式转RGB模式的问题。在网上搜索了下,找到以下几种解决方法:

# 方法一
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])

# 方法二
img2 = img[:, :, :: -1]   或者   img2 = img[..., :: -1]

# 方法三
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

下面的代码应用以上方法,做出验证:

import cv2
from matplotlib import pyplot as plt# 由OpenCV读入彩色图像
img = cv2.imread(r'D:\OpenCV_Python\chepai.jpg')# 方法一
b, g, r = cv2.split(img)
img1 = cv2.merge([r, g, b])# 方法二
img2 = img[:, :, :: -1]
# img2 = img[..., :: -1]# 方法三
img3 = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 调用matplotlib显示
plt.subplot(221); plt.imshow(img)
plt.subplot(222); plt.imshow(img1)
plt.subplot(223); plt.imshow(img2)
plt.subplot(224); plt.imshow(img3)
plt.show()

由上图可知,三种方法都可以解决彩色图像由BGR模式转RGB模式的问题。

参考文献:https://stackoverflow.com/questions/15072736/extracting-a-region-from-an-image-using-slicing-in-python-opencv/15074748#15074748

(注:原图像来源于网络,侵删)

OpenCV-Python学习笔记(一):图像读入、显示、保存,BGR模式转RGB模式相关推荐

  1. Python学习笔记(二)Excel保存数据

    由于之前对Python有一些了解,因此这个学习笔记并不是学习顺序,而是工作中需要用到的技术的记录. 工作中需要记录一大组数据,因此需要将其保存起来,我就想到了比较常见的excel. 保存到excel的 ...

  2. matlab 图像读取长宽_计算机视觉学习笔记1 图像读取显示和尺寸变换

    第一天,图像的读取,显示和尺寸变换 c++,python,MATLAB各实现一遍,以这个头骨图像为例吧 c++调用OpenCv实现图像显示和尺寸变换 c++用的编译器为clion,因此需要先配置cma ...

  3. openCV Python学习笔记(二)画几何

    此处要花几何图形,我们需要用到如下几个函数: cv2.line 画线函数 cv2.circle 画圆函数 cv2.ellipse 画椭圆 cv2.rectangle 画矩形 1.画线 img=cv2. ...

  4. OpenCV Python学习笔记(5)—— 边缘保留滤波(EPF)

    1 边缘保留滤波 高斯双边 均值迁移 2 测试 import cv2 as cv import numpy as npdef bi_demo(image):dst = cv.bilateralFilt ...

  5. Python学习笔记:7.2.2 Django快速建站 - MTV模式

    前言:本文是学习网易微专业的<python全栈工程师 - Django快速建站>课程的笔记,欢迎学习交流.同时感谢老师们的精彩传授! 一.课程目标 了解MTV模式 重新设置项目的模板目录 ...

  6. Python学习笔记之爬取网页保存到本地文件

     爬虫的操作步骤: 爬虫三步走 爬虫第一步:使用requests获得数据: (request库需要提前安装,通过pip方式,参考之前的博文) 1.导入requests 2.使用requests.get ...

  7. OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并

    OpenCV之Python学习笔记 一直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看到一本国外的新书< ...

  8. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  9. OpenCV之Python学习笔记

    RSS订阅 登陆 注册 原文链接地址:http://www.itozi.net/19477.html OpenCV之Python学习笔记 ITOZI 发布于 2015-08-06 分类:OpenSta ...

最新文章

  1. c++ 动态规划(数塔)
  2. 手把手教你学51单片机-c语言版期末考试,手把手从零教你学51单片机
  3. ftp服务器不显示缩略图,ftp服务器不显示缩略图
  4. 使用Vue.js初次真正项目开发-2018/07/14
  5. vue 组件监听页面切换_vue项目如何监听窗口变化,达到页面自适应?
  6. Python高级特性:迭代器和生成器
  7. 永远年轻,永远热泪盈眶----致所有奋斗的ACMer
  8. 怎样切换git账号密码错误_git中多账号切换问题的解决方案(转)
  9. Discuz!X1 to Discuz!NT3.1论坛转换工具 v1.0
  10. 值不值 | 三分钟搞定jpa?值不值!
  11. DataGridView
  12. 位域(Bit-fields)分析
  13. 程序员面试金典——17.9词频统计
  14. 计算机辅助设计(湖南省首届“湘邮科技杯”大学生程序设计大赛试题)
  15. 管理感悟:当好主管的关键
  16. 10年老台式机4分钟攻破量子加密算法,此前12年无人破解,核心原理来自25年前...
  17. Qt: 信号与槽机制
  18. 经济基础知识(中级)【4】
  19. python爬取高德地图_爬虫实战:如何爬取高德地图?
  20. Spring Boot整合ActiveMQ及场景举例(点对点模式、订阅模式)

热门文章

  1. nginx php phpmyadmin,nginx服务器支持phpmyadmin的配置
  2. 关于gg_bd_ad_720x90.js和follow.js
  3. 第2次作业:软件案例分析之王者荣耀
  4. DATGRIDVIEW如何不选择第一行,第一列
  5. flash as3 android air 插入视频,用Flash AS3代码实现多FLV视频播放无缝衔接
  6. SSL连接建立过程分析(1)
  7. Java实现连连看源代码文档_JAVA实现连连看游戏
  8. Python 实现【连连看】游戏
  9. java卡片布局 show没用_[showjava怎么用]java卡片布局中show的正确使用方法
  10. Java常用记录工具_Java常用的性能测试工具记录