Opencv怎么读入,显示,保存图像-OpenCV步步精深
怎么读入图像呢?
我们用
- img = cv2.imread('图像路径\原图像名称',0)
原图像名称要有后缀 .png , .jpg等等原图像带有的后缀。
这里我们着重说明一下图像路径,这个路径一定要是全英文,没有数字,没有中文,没有各种符号,说的够清楚吧,除了路径分隔符\,其余的一切一切不是英文字母的都不能用,包括以后出现图像路径,都要谨记这一点。
相信有很多和我一样的初学者面临的第一个问题就是这个,我为此找了好多帖子,好多资料,但都没有写明这个问题,我希望这里给大家提个醒,会让大家节省很多精力去干更多有意义的事。
另一个参数 0
这个参数是要告诉函数应该如何读取这幅图片,我们用0表示默认的原图像,日后我们会用到更多的参数,这里简单一提。
cv2.IMREAD_COLOR:读入一副彩色图片;
cv2.IMREAD_GRAYSCALE:以灰度模式读入图片;
cv2.IMREAD_UNCHANGED:读入一幅图片,并包括其alpha通道。
怎么显示图像呢?
- cv2.imshow('显示图像窗口的名称', img)
怎么保存图像呢?
- cv2.imwrite('图像新名称',img)
同图像新名称也要带有后缀,这个图像新名称所带有的后缀,可以不同于原图像名称的后缀,例如如果原图像的后缀为.png,图像新名称可以为.png 也可以是.jpg。
整合这三个基本内容,我们就可以进行一个最基本的程序啦
- 首先导入opencv的包
- import cv2
- 还要导入numpy包
- import numpy as np
- 开始读入图像吧,就拿我的柠檬来做例子吧
- img = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\lemongrowup.png',0)
- 然后我们可以显示这个图像咯
- cv2.imshow('image',img)
- 显示的图像会出现一闪而过的情况,这是正常的,因为我们要设定一个函数来让图像一直显示
- k = cv2.waitKey(0)&0xFF
- if k == 27:
- cv2.destroyAllWindows()
cv2.waitKey(0)&0xFF这个函数就是64位下的让窗口一直显示的函数啦
27是ESC的ASCII码,这句话就是说当按下ESC的时候,关闭图像窗口,不按
我们用
cv2.destroyAllWindows() 删除窗口,删除指定窗口的话就要在()内加入窗口的名称,这个我们以后会用到。不写这句没关系,不过你是关不掉打开的图像窗口的,只能结束主程序才可以关闭图像窗口。
- 然后我们要保存图像,
- elif k == ord('s'):
- cv2.imwrite('lemongrowupgray.jpg',img)
- cv2.destroyAllWindows()我们按下S的时候会保存
我们保存的图像有人找不到啦,我悄悄告诉你们图像就保存在你写的这个程序的目录中,例如我这个程序保存在了C:\Users\Administrator\Desktop\我的博客\opencv目录下,保存的图像就在C:\Users\Administrator\Desktop\我的博客\opencv目录里呢~
所有代码双手奉上

- 这就是第一个程序,浩浩工程,漫漫长路,我们准备一起去大干一场吧!
# -*- coding:utf-8 -*-
"""
Created on Sun Dec 25 12:08:01 2016
@author: Y
"""
import cv2
import numpy as np
#一般而言写程序的注释部分习惯于用英文,不过今后为了大家能够阅读方便,改用中文
#以灰度模式载入彩色图片(简单而言,就是把彩色图片变成黑白图片了,将彩色图像转换为灰度模式时,所有的颜色信息都将被删除)
img = cv2.imread('C:\Users\Administrator\Desktop\opencvimg\lemongrowup.png',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)&0xFF
if k == 27:
cv2.destroyAllWindows()
elif k == ord('s'):
cv2.imwrite('lemongrowupgray.jpg',img)
cv2.destroyAllWindows()

- 运行结果

- 按下s后图像就保存在这
多说一句,程序里我们用 '' 或者 "" 都是可以的,而我更喜欢 '' 一点,毕竟看起来干干净净。今天是圣诞节,昨天是平安夜,我是Y,祝大家天天开心,节日快乐!
Opencv怎么读入,显示,保存图像-OpenCV步步精深的更多相关文章
- opencv-python教程学习系列2-读取/显示/保存图像
前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍图像的读取.显示以及保存,坚持学习,共同进步. 系列教程参照OpenCV-Python中文教程: ...
- opencv 加载 修改 保存 图像
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; /* 1 加载图像 cv::imre ...
- 用python简单处理图片(1):打开\显示\保存图像
一提到数字图像处理,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此, ...
- Vtk读取并显示保存图像
(1):Vtk读取并显示图像:三种方法 转载:未知出处 转载:用VTK显示平面图片:http://blog.csdn.net/tonylk/article/details/464881 用到vtkJP ...
- opencv载入,显示及保存图像
1.声明一个表示图像的变量,在OpenCV2中,这个变量是cv::Mat类型,该类是用于保存图像以及其他矩阵数据的数据结构.默认情况下它们的尺寸为0. cv::Mat image; // ...
- [OpenCV学习笔记3][图像的加载+修改+显示+保存]
正式进入OpenCV学习了,前面开始的都是一些环境搭建和准备工作,对一些数据结构的认识主要是Mat类的认识: [1.学习目标] 图像的加载:imread() 图像的修改:cvtColor() 图像的显 ...
- openCV—Python(2)—— 载入、显示和保存图像
一.函数简单介绍 1.imread-读取图像 函数原型:imread(filename, flags=None) filename:读取的图像路径名:比如:"H:\img\lena.jpg& ...
- opencv —— imread、namedWindow & imshow、cvtColor、imwrite 加载、显示、修改、保存图像
加载图像:imread 函数 Mat imread(const string& filename, int flags = 1): filename:需要载入的图像的路径名. flags:加载 ...
- 第十二节,OpenCV学习(一)图像的读取、显示、保存
一.读取图像 所谓的图像就是一个数组,对图像的处理就是对数字的处理 import cv2 import numpy as np img = cv2.imread('dog.jpg') print(im ...
随机推荐
- linux c编程:初识进程与线程
p { margin-bottom: 0.25cm; line-height: 120% } (一) 认识进程 在Linux系统中,每一个进程都有自己的ID,就如同人的身份证一样.linux中有一个数 ...
- 嵌套ajax 页面卡死的问题
问题:要一个AJAX中的回调函数中又进行了一个AJAX调用,并且这个AJAX是在一个循环调用的,不论设置async属性是true和false页面卡死. 解决方法:async属性都设为true,不用循环 ...
- 团队作业4——第一次项目冲刺(Alpha版本)2017.4.25
在下午的1,2节软件课程结束后,我们teamworkers全体队员在禹州楼302利用课间时间进行约15分钟的短暂会议,会议的内容为阐述昨天开发遇到的问题,大家都提出自己的看法,最后统一了意见,队员互相 ...
- 【Alpha阶段】第七次scrum meeting
一.会议照片 二.会议内容 姓名 学号 负责模块 昨日任务 今日任务 杨爱清 099 界面设计和交互功能 [完成]设计界面 交互功能连接并优化 杨立鑫 100 数据库搭建和其他 [完成]将数据库与其他 ...
- 201521123104 《Java程序设计》第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点 1.2 可选:使用常规方法总结其他上课内容. 1.接口不是类,不能使用new进行实例化; 2.接口可以扩展; 3.接口中可以包含 ...
- 201521123015 《Java程序设计》第4周学习总结
本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态:使用单一接口操作多种类型的对象. 2.private修饰属性,public修饰方法. 3 ...
- 201521123098 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 1. Input Stream -- 数据提供者可从其中读数据输出流:Output Stream -- 数据接 ...
- 201521123008 《Java程序设计》第十四周学习总结
1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) - ...
- Java第十三周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识
情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...