通过本套课程,可以学到:
1.opencv的基本操作
2.两个案例,目标追踪&人脸识别
对重点内容,我会提示,包括我再准备这套课程过程中遇到的坑点!
最后代码我会放到git上,章节顺序一致:https://github.com/justinge/opencv_tutorial.git
系列文章目录
第1章 Opencv 图像基础 和 argparse模块
第2章 Opencv 读取、保存图片和视频
第3章 Opencv 图像的8种变换
第4章 Opencv 直方图
第5章 Opencv 画出基本图形以及显示文本
第6章 Opencv 人脸检测(Haar/dlib) & 关键点检测
第7章 Opencv 目标跟踪
第8章 Opencv 人脸识别
文章目录
- 系列文章目录
- 1 知识点
- 1.1 基本概念
- 1.2. 坐标系
- 1.3 基本操作
- 1.4 BGR顺序
- 2. 实际应用
- 2.1 对待彩色图
- 2.2 用plt的方式显示图片
- 3. argparse模块
- 3.1 使用方式
- 总结
1 知识点
1.1 基本概念
像素:计算机屏幕上所能显示的最小单位。用来表示图像的单位。
RGB,R : Red,G : Green,B : Blue,范围0~255。
1.2. 坐标系
这个logo像素是:18 X 20 = 360 pixels
坐标系的原点(0,0)在左上角,每一个点的坐标是:
(height, width, channel)。
1.3 基本操作
基于彩色图片
- 读取图片: cv2.imread()
- 读取图片的形状: img.shape. 返回一个(rows,heights,channels) 注意和pytorch不同
- 获取图片大小: img.size, 返回 rowsheightschannels.
- 显示图片:cv2.imshow()
- 等待:cv2.waitKey(0)
- 关闭:cv2.destroyAllWindows()
基于灰度图片
- 读取图片: cv2.imread(img,cv2.IMREAD_GRAYSCALE)
- 获取图片形状:img.shape,返回一个(rows,heights), 注意这里没有channels了 因为就一个通道了.
1.4 BGR顺序
opencv的 channel顺序是BGR, pillow模块和pytorch都是RGB的,这个需要注意,另外还有channels=4的一种格式的图片.png的,读取的时候需要转成三维的,反正吧,不是3channel,就转成3channel是个好习惯. 一般框架都会有这一步.
一个像素点也是有三个值的.
2. 实际应用
2.1 对待彩色图
import cv2
img = cv2.imread("../images/children.jpg")
# 显示图片
cv2.imshow('image1',img)
# 把一块写成红色
img[6:40,6:40] = (0,0,255)
cv2.imshow('image2',img)
# 等待
cv2.waitKey(0)
# 关闭所有窗口
cv2.destroyAllWindows()
给logo的颜色换个顺序
2.2 用plt的方式显示图片
import matplotlib.pyplot as plt
plt.subplot(121)
plt.imshow(img_logo)
plt.subplot(122)
plt.imshow(img_logo_new)
plt.show()
3. argparse模块
看名字 argparse = arg+parse 也就是命令行参数解析的意思
argparse模块使编写用户友好的命令行接口变得容易,程序定义了它需要的参数,而argparse将找出如何从sys.argv中解析这些参数,argparse模块还会自动生成帮助和使用消息,并在用户给程序提供无效参数时发出错误信息。
3.1 使用方式
import argparse # 导入库
parser = argparse.ArgumentParser() # 获取所有参数
parser.add_argument(“-n1”, “--number one”, help=“第一个参数”, type=int) # 添加参数1
parser.add_argument(“-n2”, “--number two”, help=“第二个参数”, type=int) # 添加参数2
args = parser.parse_args() # 解析所有参数
(1)官网教程1:
https://docs.python.org/3/howto/argparse.html
(2)官网教程2:https://docs.python.org/3/library/argparse.html#module-argparse
总结
## 两种方式来挑整通道顺序
img_logo_new = cv2.cvtColor(img_logo, cv2.COLOR_BGR2RGB) # BGR -> RGB
## 手动方式转成RGB
b,g,r = cv2.split(img_logo)
img_new = cv2.merge([r, g, b])
git地址:https://github.com/justinge/opencv_tutorial.git