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 ...
随机推荐
- 一文吃透Elasticsearch
本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...
- RDIFramework.NET Web版报表管理-助力企业高效智能图表
功能描述 在RDIFramework.NET Web版本中全新的报表管理功能模块,非常实用的功能,重量级推荐.主要用于对日常常用的报表做定制展示.可以自动发布到模块(就可授权给指定资源访问),在报表定 ...
- Java学习笔记04
1. 循环进阶 1.1 无限循环 概念 循环一直停不下来,又叫死循环. for格式 for (;;) { 循环语句; } while格式 while (true) { 循环语句; } do...w ...
- Hystrix 如何在不引入 Archaius 的前提下实现动态配置更新
Hystrix 简介 Hystrix 是 Netflix 开源的一个限流熔断降级组件,防止依赖服务发生错误后,将调用方的服务拖垮.这里对 Hystrix 本身不做过多介绍. Hystrix 目前处于维 ...
- vsftpd[9183]: warning: can't get client address: Socket operation on non-socket
今天在linux redhat7.2下执行service vsftpd start一直不能开启vsftpd服务,本来怀疑SELINUX的问题(其他ftp下载问题可以看下我的另外一篇博客Linux下ft ...
- 产品质量管理利器,华为云发布CodeArts Defect缺陷管理服务
摘要:近日,华为云CodeArts Defect缺陷管理服务正式上线,提供结构化缺陷跟踪流程和标准化的质量度量模型. 本文分享自华为云社区<产品质量管理利器,华为云发布CodeArts Defe ...
- Centos7.x 使用 selenium + python + jenkins 做UI自动化
一.基础环境准备 1.Chrome + Chrome Driver https://www.cnblogs.com/TSmagic/p/15671533.html(此篇文章已经介绍) 2.Seleni ...
- 【性能】JDK和Jmeter的安装与配置
一.JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downl ...
- 自定义alert、confirm、prompt的vue组件
Prompt.vue组件 说明: 通过props定制定制的Prompt,可选值 mode 默认值:prompt, 其他模式:confirm.message(简单的提示,可设置提示显示时间,类似aler ...
- 2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指
2022-11-18:给定一个数组arr,表示连续n天的股价,数组下标表示第几天 指标X:任意两天的股价之和 - 此两天间隔的天数 比如 第3天,价格是10 第9天,价格是30 那么第3天和第9天的指 ...