python+opencv入门-图像的基本操作

内容借鉴平台 https://www.educoder.net/

在简介中,我们了解了人脸识别是什么以及其重要性,现在我们开始学习并完成自己的人脸识别应用系统。
完整的人脸识别流程,一般有如下五个步骤:
在这里插入图片描述
图像采集:使用摄像机或摄像头采集含有人脸的图像或视频流;
人脸检测:检测图片中是否包含人脸;
预处理:对人脸图像进行灰度处理、噪声过滤等预处理;
特征点提取:提取人脸图片中包含的特征数据;
人脸识别:将新的人脸照片与人脸库进行算法匹配,输出识别结果;

在接下来的实训中,会根据这个流程,一一讲解,带大家快速高效的入门人脸识别。
“工欲善其事必先利其器”,所以我们以如何对图片进行一系列的基础操作,来开始我们的学习。

任务描述

本关任务:了解 OpenCV计算机视觉库,学习使用 OpenCV采集图片、读取图片、展示图片以及保存图片。

相关知识

为了完成本关任务,请认真阅读以下相关知识。

OpenCV 简介

OpenCV是一个开源的跨平台计算机视觉库。跨平台是指,它可以运行在 Linux、 Windows、 Android和 Mac OS等操作系统上。它实现了图像处理和计算机视觉方面的很多通用算法,具有轻量高效的特点。 OpenCV提供了多种语言的编程接口,例如 C、 C++、 Python。
所以,我们先学习使用 OpenCV做图像基本操作。

1.采集图片

原始的图片多数采用各种摄像头采集,再整理为图片数据集。
如果使用 OpenCV采集,可以通过 cv2.VideoCapture()获取摄像头并捕捉画面中的图片。函数声明为:

cv2.VideoCapture(摄像头来源)

其中,传入的参数,指定 0时为默认计算机默认摄像头,指定 1可以更换来源。
然后,获取捕获图像,函数为:

cap.read()

cap.read()返回一个布尔值( True/ False)和一帧图像。
最后释放捕获对象,函数为:

cap.release()

示例如下:

# 引入OpenCV库
import cv2

# 调用摄像头进行拍照
cap = cv2.VideoCapture(0)

# 获取一帧图片
# 如果捕获成功,代码中ret值为真,img为捕获的图像。
ret, img = cap.read()

# 释放捕获对象
cap.release()

2.读取图片

通常我们使用采集完成的图片。在 OpenCV中,使用 cv2.imread()从文件中加载一张图片。
函数声明为:

 cv2.imread(图片路径, 标记)

第一个参数为图片路径,图片应该在当前的工作路径,或在指定的绝对路径下。
第二个参数指定图片被读取的方式:
cv2.IMREAD_COLOR : 读入彩色图像,默认模式;
cv2.IMREAD_GRAYSCALE : 以灰度模式读入图像;
cv2.IMREAD_UNCHANGED : 加载图像包含 alpha通道。
也可以,使用数字简约表示以上三种标记,分别为 1, 0或 -1。
示例如下:

import cv2
# 加载一张位于当前目录下的`images/girl.jpg`的图片
image_path = "images/girl.jpg"
# 以灰度模式读取图片
img = cv2.imread(image_path,0)

3.展示图片

读取图片之后,可以将图片展示到窗口。使用 cv2.imshow()在窗口展示图片。
函数声明为:

imshow(窗口名称, 图片对象)

第一个参数传入窗口的名字;
第二个参数传入需要展示的图片对象。
当窗口展示完之后,需要再调用 cv2.destroyAllWindows()销毁所有的窗口。
示例如下:

import cv2

# 读取图片
image_path = "images/girl.jpg"
img = cv2.imread(image_path,1)

# 窗口展示图片
cv2.imshow('cute girl',img)
# 等待用户关闭图片窗口
cv2.waitKey(0)
# 销毁创建的所有窗口
cv2.destroyAllWindows()

在这里插入图片描述

4.保存图片

在完成图像的一系列操作之后,可以使用 cv2.imwrite()将图片保存到本地。
函数声明为:

cv2.imwrite(图片路径, 图片对象)

同样的,
第一个参数为图片路径,图片应该在当前的工作路径,或在指定的绝对路径下;
第二个参数为将要保存的图片对象。
示例如下:

import cv2

# 读取图片
image_path = "images/girl.jpg"
img = cv2.imread(image_path,1)

# 保存图片为girl-copy.png
cv2.imwrite('images/girl-copy.png',img)

编程要求

导入 openCV 库 (cv2);
读取路径 step1/image/girl.jpg下的图片(图片读取模式三种任选一种都可以);
将读取到的图片保存到路径 step1/out/girl-new.jpg下。

--------------answer----------
-在这里插入图片描述
下面展示一些 内联代码片

#********** Begin **********## 导入OpenCV库import cv2
#********** End **********#
# 原始图片路径image_path = 'step1/image/girl.jpg'
# 保存图片路径save_image_path = 'step1/out/girl-new.jpg'
#********** Begin **********#
# 读取图片并保存图片
img = cv2.imread(image_path,1)
cv2.imwrite(save_image_path,img)
#********** End **********#
# 窗口展示图片'''
cv2.imshow('girl',img)
# 等待用户关闭图片窗口cv2.waitKey(0)
# 销毁创建的所有窗口cv2.destroyAllWindows()'''

链接: link.

部分的图片来自edu教学平台,转载注明出处,一起进步吧

猜你喜欢

转载自blog.csdn.net/m0_46742690/article/details/106270250