当前位置:   article > 正文

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

opencv shape

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


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

shape属性

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

shape[0]=图像行数
shape[1]=图像列数
shape[2]=图像通道数
  • 1
  • 2
  • 3
分别读取图片行数、列数与通道数
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])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

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

注意: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])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

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

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

运行结果如下:

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

[Done] exited with code=0 in 0.22 seconds
  • 1
  • 2
  • 3
  • 4

size属性

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

读取彩图size属性

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

运行结果如下:

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

[Done] exited with code=0 in 0.228 seconds
  • 1
  • 2
  • 3
  • 4

读取灰度图size属性

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

运行结果如下:

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

[Done] exited with code=0 in 0.208 seconds
  • 1
  • 2
  • 3
  • 4

从读取同一张图片原图形式下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)
  • 1
  • 2
  • 3
  • 4

运行结果如下:

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

[Done] exited with code=0 in 0.221 seconds
  • 1
  • 2
  • 3
  • 4

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) #数据类型,字符串形式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行结果如下:

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

[Done] exited with code=0 in 0.217 seconds
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

读取灰度图的基本属性

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) #数据类型,字符串形式
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行结果如下:

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

[Done] exited with code=0 in 0.218 seconds
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

运行结果如下:

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

[Done] exited with code=0 in 0.218 seconds
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号