opencv学习笔记(三):访问图片属性

opencv学习笔记(三):访问图片属性


频繁使用的几个图片属性:
1.shape:如果是彩色图像,则返回(行数,列数,通道数)的数组;如果是灰度图像,则返回(行数,列数)的数组
2.size:返回图像的像素总数:行数*列数*通道数
3.dtype:返回图像的数据类型

shape属性

读取彩色图像的行数与列数

shape[0]=图像行数
shape[1]=图像列数
shape[2]=图像通道数
分别读取图片行数、列数与通道数
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print ('The number of lines of this image is:',Img.shape[0])
print ('The number of columns of this image is:',Img.shape[1])
print ('The number of channels of this image is:',Img.shape[2])

运行结果如下:
在这里插入图片描述

直接读取图片shape属性,以元组形式返回
import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print ('The shape of  this image :',Img.shape)

运行结果如下:
在这里插入图片描述

注意:Img.shape返回的是一个tuple,tuple=(rows,cols,channels)

读取灰度图的行数与列数

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的行数为:',Img.shape[0])
print ('该图片的列数为:',Img.shape[1])
print ('该图片的通道数为:',Img.shape[2])

运行上述代码后,会发现程序报错:

\Traceback (most recent call last):
  File "f:\Opencv\readshap.py", line 6, in <module>
    print ('该图片的通道数为:',Img.shape[2])
IndexError: tuple index out of range

报错:数组下标越界;注意:灰度图的shape属性只有行数和列数,没有通道数(shape[2]),实际灰度图的通道数为1
直接读取灰度图的shape属性也可发现这一特点:

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的shape属性为:',Img.shape)

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
该图片的shape属性为: (321, 481)

[Done] exited with code=0 in 0.22 seconds

size属性

size:返回图像的像素总数:行数*列数*通道数
特别注意,灰度图的通道数为1,而不是0

读取彩图size属性

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print ('该图片的size属性为:',Img.size)

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
该图片的size属性为: 463203

[Done] exited with code=0 in 0.228 seconds

读取灰度图size属性

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的size属性为:',Img.size)

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
该图片的size属性为: 154401

[Done] exited with code=0 in 0.208 seconds

从读取同一张图片原图形式下size属性和灰度图下size属性,也可以看出灰度图通道数为1(灰度图的size结果为原图size结果的1/3)

dtype属性

dtype:返回图像的数据类型,以字符串形式返回

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print ('该图片的数据类型为:',Img.dtype)

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
该图片的数据类型为: uint8

[Done] exited with code=0 in 0.221 seconds

itemsize属性

itemsize:单个像素的数据长度

nbytes属性

nbytes:表示图像所占的内存空间=itemsize*size

ndim属性

ndim:维度,表示shape属性的长度=len(shape)

程序:读取图像的基本属性

读取彩图图像的基本属性

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_UNCHANGED)
print('图像形状=',Img.shape) #形状,是一个tuple
print('图像维度=',Img.ndim) #维度,也是其shape属性的长度=len(shape)
print('单个数据长度=',Img.itemsize) #单个数据长度
print('图像总数据长度=',Img.size) #总长度,有多少个数据
print('图像内存占用空间=',Img.nbytes) #占用的内存空间=itemsize*size
print('图像数据类型=',Img.dtype) #数据类型,字符串形式

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
图像形状= (321, 481, 3)
图像维度= 3
单个数据长度= 1
图像总数据长度= 463203
图像内存占用空间= 463203
图像数据类型= uint8

[Done] exited with code=0 in 0.217 seconds

读取灰度图的基本属性

import cv2
import numpy as np
Img = cv2.imread('1.jpg',cv2.IMREAD_GRAYSCALE)
print('图像形状=',Img.shape) #形状,是一个tuple
print('图像维度=',Img.ndim) #维度,也是其shape属性的长度=len(shape)
print('单个数据长度=',Img.itemsize) #单个数据长度
print('图像总数据长度=',Img.size) #总长度,有多少个数据
print('图像内存占用空间=',Img.nbytes) #占用的内存空间=itemsize*size
print('图像数据类型=',Img.dtype) #数据类型,字符串形式

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
图像形状= (321, 481)
图像维度= 2
单个数据长度= 1
图像总数据长度= 154401
图像内存占用空间= 154401
图像数据类型= uint8

[Done] exited with code=0 in 0.218 seconds

运行结果如下:

[Running] python -u "f:\Opencv\readshap.py"
图像形状= (321, 481)
图像维度= 2
单个数据长度= 1
图像总数据长度= 154401
图像内存占用空间= 154401
图像数据类型= uint8

[Done] exited with code=0 in 0.218 seconds
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,OpenCV是一个开源计算机视觉和机器学习软件库,用于开发图像和视频处理应用程序。通过使用OpenCV,您可以读取摄像头并显示实时图像,打开视频文件或摄像头文件,并获取视频的相关信息,例如帧宽度、帧高度、帧率和总帧数。 对于学习OpenCV,你可以按照以下步骤进行: 1. 安装OpenCV库:在开始学习OpenCV之前,您需要从OpenCV官方网站下载和安装OpenCV库。根据您的操作系统和编程语言选择合适的版本。 2. 学习基本概念:熟悉OpenCV的基本概念和术语,例如图像和视频的加载、显示、保存以及常用的图像处理操作,如滤波、边缘检测和特征提取等。 3. 掌握OpenCV函数和类:深入了解OpenCV提供的函数和类,例如cv::Mat用于图像和矩阵操作,cv::VideoCapture用于读取和处理视频,以及cv::imshow和cv::waitKey等用于显示图像的函数。 4. 实践项目:通过完成一些实践项目来应用您所学到的知识。例如,利用OpenCV实现人脸检测、目标追踪、图像识别等。 5. 学习资料和资源:查找和阅读OpenCV的官方文档、教程和示例代码,参与开源社区讨论和交流,加入相关的论坛和邮件列表等。 总结起来,学习OpenCV包括安装OpenCV库、学习基本概念、掌握OpenCV函数和类、实践项目以及查找和阅读相关资料和资源。通过不断实践和学习,您将能够更好地理解和应用OpenCV库来开发图像和视频处理应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值