长春设计网站企业家居网站建设
通过本套课程,可以学到:
 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
