【Python-第三方库-OpenCV】随笔

随笔

理论

【1】

说明

  • image.shape释义;
  • 获取图像的属性(信息);
  • 图像的属性包括:行,列,通道,图像数据类型,像素数目等;

正文A

  • 在图像处理中,image.shape表示图像的尺寸和通道数;
  • 对于彩色图像,通常有三个通道(红、绿、蓝);
  • 而灰度图像只有一个通道。

正文B

  • image.shape返回一个表示图像形状的元组;
  • 具体的含义是 (height, width, channels)
  • height表示图像的高度(垂直方向上的像素数);
  • width表示图像的宽度(水平方向上的像素数);
  • channels表示图像的通道数,对于彩色图像通常是3(红、绿、蓝),对于灰度图像是1

正文C

  • 举例,image.shape[2]表示图像的通道数,对于彩色图像来说,它应该是 3;
  • 这个信息在处理图像时很重要,因为它帮助我们正确地解释和处理图像的各个通道。

正文D

  • img.shape[:2]表示取彩色图片的长、宽;
  • img.shape[:3]则取彩色图片的长、宽、通道;

正文E

  • 关于img.shape[0]、[1]、[2]
  • img.shape[0]:图像的垂直尺寸(高度);
  • img.shape[1]:图像的水平尺寸(宽度);
  • img.shape[2]:图像的通道数;
  • 在矩阵中,[0]就表示行数,[1]则表示列数。

实操

【1】

说明

  • 图片的加载、显示和保存;

代码

import cv2

img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")

# 参数-1为按原通道读入,不写的话默认读入三通道图片,例如(112,112,3)
print(img.shape)  
# 读入的时图片的高度height
print(img.shape[0]) 
# 读入的时图片的宽度weight
print(img.shape[1])  

结果

(607, 1382, 3)
607
1382

【2】

代码

import cv2

# 读取图片
img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")
# 读取图片(仅读取灰色)
imgGrey = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg", 0)
#  展示图片
cv2.imshow("img", img)
#  展示图片
cv2.imshow("imgGrey", imgGrey)
#  等待图片的关闭
cv2.waitKey()
# 写出图片
cv2.imwrite(r"C:\Users\SUNxRUN\Desktop\Demo_1.jpg", imgGrey)

疑问

  • imshow的两个参数作用是什么?

【3】

说明

  • 图像显示窗口的创建与销毁;

代码

import cv2

img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")

# 创建一个窗口
cv2.namedWindow("img", cv2.WINDOW_AUTOSIZE)
cv2.imshow("img", img)
cv2.waitKey()
# 销毁任何建立的窗口
cv2.destroyAllWindows()

注释

cv2.namedWindow(窗口名,属性)
- 属性:指定窗口大小模式;
>>> `cv2.WINDOW_AUTOSIZE`:根据图像大小自动创建大小;
>>> `cv2.WINDOW_NORMAL`:窗口大小可调整;

【4】

说明

  • 图片宽、高、通道数获取;

代码

import cv2

img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")
imgGrey = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg", 0)

sp1 = img.shape
sp2 = imgGrey.shape

print(sp1)
print(sp2)

结果

(800, 800, 3)
(800, 800)

【5】

说明

  • 图像像素数目和图像数据类型的获取;

代码

import cv2

img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")

imgSize = img.size
print(imgSize)

ty = img.dtype
print(ty)

结果

1920000
uint8

解释

  • 图像矩阵imgsize属性和dtype属性分别对应图像的像素总数目和图像数据类型;
  • 一般情况下,图像的数据类型是uint8

【6】

说明

  • 获取和修改图片中某点的像素值;

代码

import cv2

# 读取图像(使用cv2读进来是一个`numpy`矩阵,像素值介于0~255)
img = cv2.imread(r"C:\Users\SUNxRUN\Desktop\Demo.jpg")

# 读取像素点
px = img[100, 100]
print(px, "   ", type(px))

# 修改像素
img[100, 100] = [0, 0, 0]
print(img[100, 100])

结果

[96 75 67]     
[0 0 0]

说明

  • 访问和操作图像像素;

代码


说明

  • 生成指定大小的空图像;

代码

你可能感兴趣的:(opencv,python,计算机视觉)