提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
传统视觉–opencv的学习(一)
一、opencv使用时需安装的库
opencv-python库,numpy库,matplotlib库
二、关于图像的基本操作
1. 引入库
代码如下(示例):
import numpy as np
import cv2
import matplotlib.pyplot as plt
2. 读入图片
代码如下(示例):
import numpy as np
import cv2
im = cv2.imread('./sample.jpg',0)
cv2.imread(图像路径,读取图像的方式)
读进来的格式是BGR格式
读取图像的方式:
- cv.IMREAD_COLOR: 1 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。
- cv.IMREAD_GRAYSCALE: 0 以灰度模式加载图像
- cv.IMREAD_UNCHANGED: -1 加载图像,包括alpha通道
3. 显示图像
cv2.imshow('Display',im)
参数:
1. 窗口的名称,用字符串表示
2. 加载好的图片名称
注意:
在使用cv2.imshow()之后,务必后面添上 cv2.waitKey() 来设定图像窗口的显示时长
3.1 图像单窗口显示
# 在窗口 Display1 中显示im1
cv2.imshow('Display1',im1)
# 在窗口 Display2 中显示im2
cv2.imshow('Display2',im2)
# waitKey(0)表示程序会无限制的等待用户的按键事件
cv2.waitKey(0)
3.2 按指定大小的窗口显示图像
cv2.namedWindow("Demo", cv2.WINDOW_NORMAL) # 创建窗口
cv2.resizeWindow("Demo", 400, 300) # 先宽后高
cv2.imshow("Demo", img1)
cv2.waitKey(0)
3.3 使用plt在同一窗口显示多张图片
N = 2
M = 2
# 表示画布的尺寸为N*M,可放置N*M个图像
for i in range(4):
plt.subplot(N, M, i+1) # 表示第i张图片,下标只能从1开始
plt.title("im1") #图像名称,该行可省略
plt.imshow(im) # 要显示的图片
plt.xticks([]), plt.yticks([]) # 隐藏 x 轴和 y 轴上的刻度值
plt.show()
注意:
- opencv读入的图片是BGR格式,但plt.imshow()展示的RGB格式,需要进行格式转化。如果是单通道格式则不需要转换
im = cv2.cvtColor(im, cv.COLOR_BGR2RGB)
4.保存图像
cv2.imwrite('./street1.jpg',im)
参数:
- 保存的路径
- 要保存的图片
5. 图像通道的拆分和合并
b,g,r=cv2.split(bgr_image)
bgr = cv2.merge([b, g, r]) # 按B→G→R的顺序合并通道
说明:
- b,g,r分别为单通道图像
- 如果图像偏蓝,则b通道值偏大,故b图像偏白
使用opencv展示单通道图片,会呈现灰度图
import cv2 as cv
image = cv.imread("./street.jpg")
image = cv2.resize(image,(-1,-1),None, fx= 0.2, fy=0.2)
b,g,r = cv.split(image) #将图像数据拆分成三份
cv.imshow("bgr_image",image)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
# 单通道图片用cv2.imshow()展示时三个通道的值会变得相同,从而呈现灰度图
cv.waitKey(0)
6. 图像属性的获取
6.1 获取图像的shape
print("image_shape",image.shape)
注:
- .shape返回一个元组包含三个值,分别是高度,宽度和通道数,如果通道数为1,则第三个值省略,如下分别为彩色图和灰度图的输出的结果
image_shape (317, 480, 3) # 图片为彩色时
image_shape (317, 480) # 图片为灰度图时
6.2 获取图像的size
print("image_size",image.size)
注:
- .size返回的是一个值(图像包含的像素个数):该值等于水平像素×垂直像素×通道数
image_size 456480 # 图片为彩色时
image_size 152160 # 图片为灰度图时