0
点赞
收藏
分享

微信扫一扫

opencv笔记 - 获取图像属性

学习链接:https://www.bilibili.com/video/BV1De411R77P/?p=6&vd_source=441ed12ec48d03afe294e7c5f663a0d3

获取图像属性

主要介绍三个属性:

  1. 形状属性:行、列、通道数
  2. 像素数目属性
  3. 图像的数据类型属性

形状属性

shape

shape可以获取图像的形状,返回包含行数,列数,通道数的元组.

  • 灰度图像:返回行数,列数
  • 彩色图像:返回行数,列数,通道数(BGR)

例子

import cv2
img1 = cv2.imread('opencv/image/image_demo.jpg',0)
print(img1.shape)

img2 = cv2.imread('opencv/image/image_demo.jpg',1)
print(img2.shape)

'''
运行后输出:
(720, 1600)
(720, 1600, 3)
'''
'''
(720, 1600)是有720行、1600列
(720, 1600, 3)是有720行、1600列、3个通道
'''

opencv笔记 - 获取图像属性_取值范围

像素数目属性

size

size可以获取图像的像素数目。(像素数目指的是这个图像有多少个像素点)

  • 灰度图像:返回:行数 * 列数
  • 彩色图像:返回:行数 * 列数 * 通道数

例子

import cv2
img1 = cv2.imread('opencv/image/image_demo.jpg',0)
print(img1.size)

img2 = cv2.imread('opencv/image/image_demo.jpg',1)
print(img2.size)

'''
运行后输出:
1152000
3456000
'''
'''
1152000说明img1图像有1152000个像素点(灰度图像)
3456000说明img2图像有3456000个像素点(彩色图像)
'''

opencv笔记 - 获取图像属性_图形属性_02

图像数据类型属性

dtype

dtype返回的是图像里面每个像素点的数据类型。

例子

import cv2
img1 = cv2.imread('opencv/image/image_demo.jpg',0)
print(img1.dtype)

img2 = cv2.imread('opencv/image/image_demo.jpg',1)
print(img2.dtype)

'''
运行后输出:
uint8
uint8
'''
# 可以看到运行后输出的都是uint8类型(表示每一个像素点都是uint8这个类型)

opencv笔记 - 获取图像属性_取值范围_03

完整代码

import cv2
img1 = cv2.imread('opencv/image/image_demo.jpg',0)
# print(img1.shape)
# print(img1.size)
# print(img1.dtype)

img2 = cv2.imread('opencv/image/image_demo.jpg',1)
# print(img2.shape)
# print(img2.size)
# print(img2.dtype)

总结

形状属性:img.shape

像素数目:img.size

数据类型:img.dtype

SOP一下(uin8是什么)

# 使用cv2的dtype获取图像的数据类型返回uint8,这是个什么类型,这个代表了什么?dtype还能返回那些属性?全部给我列举出来

'''
uint8是一种无符号整数类型,表示每个像素的取值范围为0到255。在计算机中,它使用8位二进制数来表示一个整数值。

除了uint8之外,OpenCV中的dtype属性还可以返回以下几种属性:
    float32:单精度浮点数类型,每个像素的取值范围为0.0到1.0。
    float64:双精度浮点数类型,每个像素的取值范围为0.0到1.0。
    int8:有符号整数类型,每个像素的取值范围为-128到127。
    int16:有符号整数类型,每个像素的取值范围为-32768到32767。
    int32:有符号整数类型,每个像素的取值范围为-2147483648到2147483647。
    int64:有符号整数类型,每个像素的取值范围为-9223372036854775808到9223372036854775807。
这些不同的数据类型可以根据具体的需求选择使用,例如对于需要精确计算的场景可以使用float32或float64类型,而对于只需要表示黑白图像的场景可以使用uint8类型。
'''

'''
总结uint8:
	无符号整数类型,每个像素的取值范围为0到255,使用二进制来表示。
'''

opencv笔记 - 获取图像属性_取值范围_04

举报

相关推荐

0 条评论