1 opencv-python图像读写模块
这个分类记录自己学习opencv的随笔文档,方便以后查询和复习。python-opencv环境配置网上教程很多,此处就不做赘述了,该文档记录opencv最基础的图像读写和显示,工具是jupyter notebook。
1 opencv中,图像读取函数是 imread(filename, flags=None)
参数说明:
filename:读取图像的路径,通常支持jpg、png、bmp、tiff等格式文件。
flags:图片读入的模式,模式定义在cv::ImreadModels中,默认值为IMREAD_COLOR。还有一个常用的模式是:IMREAD_GRAYSCALE,对应值为 0,以灰度图方式读取图片。
注意:imread函数返回一个BGR形式的图像对象,其类型为一个numpy数组。
2 显示图像的函数是 imshow(window_name, image)
参数说明:window_name是一个字符串,代表要在其中显示图像的窗口的名称。image是它是要显示的图像。
可以用 namedWindow(window_name, flag) 来定义一个窗口,如果没有定义会根据 imshow 的参数自动生成一个窗口。已经定义的窗口可以用 resizeWindow(window_name,width,height) 来改变窗口大小。
import cv2
import numpy as np img=cv2.imread('C:/Users/86188/Desktop/test/python/cat.jpg',cv2.IMREAD_COLOR) #读取图片
cv2.imshow('showimg',img) #显示图片
cv2.waitKey(0) #等待用户操作
cv2.destroyWindow('window') #销毁窗口

3 除了直接用opencv的imshow来显示图片,也可以用matplotlib来显示图片
注意需要在显示的时候进行图片通道翻转(直接用::-1,也可以用cvtColor()函数进行颜色通道翻转),否则显示的图片颜色会异常,因为正常图片的格式是RGB,但是opencv读取进来的格式是BGR。

用opencv来显示图像通常需要好几行代码,可以自己封装成函数,需要的时候直接调用:

4 opencv中图像的属性
在 OpenCV 中,图像是一个 NumPy 数组,我们可以使用numpy数组的属性来访问图像属性:
- 图像类型 - 图像的数据结构。OpenCV中的图像是numpy.ndarray,我们可以将其访问为 type(img) 。
图像形状 - 它是以 [H, W, C] 格式表示的形状。其中 H,W 和 C 分别是图像的 高度,宽度和通道数 ,我们可以将其访问为 img.shape 。
图像大小 - 它是图像中像素的总数。它也是数组中元素的总数。我们可以将其访问为 img.size 。
数据类型 - 它是图像数组元素的dtype。我们可以将其访问为 img.dtype 。

5 图片保存 imwrite(filename,img)
参数说明: filename 表示保存的文件名称,img 是需要保存的图像对象。
创建窗口,读取显示和保存图像的实例如下:
import cv2 #创建窗口
cv2.namedWindow('img',cv2.WINDOW_NORMAL)
cv2.resizeWindow('img',640,480) #读取图片
img = cv2.imread('./cat.jpg') while True:
cv2.imshow('img',img)
key = cv2.waitKey(0) #该函数的返回值为ASCLL码,参数0表示:等待 0 毫秒后,用户可以通过按键盘上的任意键来销毁所有窗口。 if key == ord('q'): #如果键盘输入q,退出
break
elif key == ord('s'): #如果键盘输入s,保存图片到 当前文件夹下
cv2.imwrite('./mycat.png',img)
else:
print(key) cv2.destroyAllWindows() #销毁当前所有窗口
此外,opencv中也可以进行多幅图像的读取,函数是 imreadmulti(filename) 参数filename是待读取的图像文件路径,返回的结果是tuple类型,包含两个值,第一个为bool类型,表示是否读取成功;第二个参数是list类型,保存读取的图像结果。多幅图像保存可以用imwritemulti(filename,img) .参数filename表示保存的图像文件名称,img是图像数据。
1 opencv-python图像读写模块的更多相关文章
- opencv 批量图像读写
处理图像数据集时通常要读写整个文件夹里的图像,这时就会用的图像的批量读写. 比较常用的方法就是生成一个包含所有图像的txt列表 生成txt文件的方法如下: 利用cmd进入dos 利用路径进入指定文件夹 ...
- opencv python 图像二值化/简单阈值化/大津阈值法
pip install matplotlib 1简单的阈值化 cv2.threshold第一个参数是源图像,它应该是灰度图像. 第二个参数是用于对像素值进行分类的阈值, 第三个参数是maxVal,它表 ...
- Python图像读写方法对比
训练视觉相关的神经网络模型时,总是要用到图像的读写.方法有很多,比如matplotlib.cv2.PIL等.下面比较几种读写方式,旨在选出一个最快的方式,提升训练速度. 实验标准 因为训练使用的框架是 ...
- 11、OpenCV Python 图像金字塔
__author__ = "WSX" import cv2 as cv import numpy as np # 高斯金字塔 #金字塔 原理 ==> 高斯模糊+ 降采样 #金 ...
- 10、OpenCV Python 图像二值化
__author__ = "WSX" import cv2 as cv import numpy as np #-----------二值化(黑0和白 255)---------- ...
- 8、OpenCV Python 图像直方图
__author__ = "WSX" import cv2 as cv import numpy as np from matplotlib import pyplot as pl ...
- 1、OpenCV Python 图像加载和保存
__author__ = "WSX" import cv2 as cv # 这里的文件是图片或者视频 def Save_File( image ): cv.imwrite(&quo ...
- 12、OpenCV Python 图像梯度
__author__ = "WSX" import cv2 as cv import numpy as np def lapalian_demo(image): #拉普拉斯算子 # ...
- 2、OpenCV Python 图像属性获取
__author__ = "WSX" import cv2 as cv import numpy as np image = cv.imread("1.JPG" ...
- Python 利用pytesser模块识别图像文字
使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the ...
随机推荐
- Nuxtjs实现服务端渲染和静态化站点
本文将介绍如何使用Nuxtjs对vue项目进行ssr和静态化处理. Nuxtjs简单介绍 首先,我们简单了解下Nuxtjs框架,Nuxt.js是一个基于Vue的通用框架,主要用于解决Vue项目的服务端 ...
- 【Visual Leak Detector】库的 22 个 API 使用说明
说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇主要介绍 VLD 库提供的 22 个外部接口.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. 头文件简介 ...
- Go语言核心知识回顾(接口、Context、协程)
温故而知新 接口 接口是一种共享边界,计算机系统的各个独立组件可以在这个共享边界上交换信息,在面向对象的编程语言,接口指的是相互独立的两个对象之间的交流方式,接口有如下好处: 隐藏细节: 对对象进行必 ...
- 基于kubeasz部署高可用k8s集群
在部署高可用k8s之前,我们先来说一说单master架构和多master架构,以及多master架构中各组件工作逻辑 k8s单master架构 提示:这种单master节点的架构,通常只用于测试环境, ...
- AndroidApp加固与脱壳
0x01 APP加固 01.为什么要加固 APP加固是对APP代码逻辑的一种保护.原理是将应用文件进行某种形式的转换,包括不限于隐藏,混淆,加密等操作,进一步保护软件的利益不受损坏.总结主要有以下三方 ...
- 真实场景sql优化持续更新(老司机必备)
概述 下述场景,均来自实际产品线上经验,出于保密考量,所有需求场景都是仿造的,模拟遇到过的真实场景. 场景一: 统计数据(Order by 不具备唯一性导致的分页数据混乱) 需求 在实际业务场景中,我 ...
- Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试
前言 mysql驱动版本msvc2015x32版本调好, mysql的mingw32版本的驱动上一个版本编译并测试好,有些三方库最低支持vs2017,所以只能使用msvc2017x64,基于Qt5 ...
- [OpenCV-Python] 4 图像读取
文章目录 OpenCV-Python: II OpenCV 中的 Gui 特性 4 图片 4.1 读入图像 4.2 显示图像 4.3 保存图像 4.4 总结一下 OpenCV-Python: II O ...
- Solon 统一的返回结果调整
使用 "统一的渲染控制" 可以对输出做统一的控制外...还可以借助路由拦截器 RouterInterceptor ,对 mvc 返回结果做提交确认机制(即可修改)进行控制(相对来讲 ...
- 2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上。一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻
2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上.一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻 ...