脚踏实地的大梦想家

脚踏实地的大梦想家

OpenCV 简介

Opencv 库由 CC++ 语言编写,涵盖计算机视觉各个领域内的 2500 多个函数,可以在多种操作系统上运行。其旨在提供一个简洁而又高效的接口,从而帮助开发人员快速地构建视觉应用。

OpencvIntel 开发,是世界上最大、最著名的计算机视觉图像库。很多做计算机视觉的商业公司,都是在他的基础上做出的商业解决方案。而 Opencv ,更像是一个黑盒,让我们专注于视觉应用的开发,而不必过多关注基础图像处理的具体细节。

Opencv 能干什么?
答:目标识别(人脸识别、车辆识别、物体分类)、自动驾驶(车道检测、自动驾驶、车道保持等等)、医学图像分析、视频内容理解(可理解非结构化数据)。

Python OpenCV 库下载

# FOR ANACONDA PROMPT
pip install opencv-python

Python 中使用 Opencv

import cv2
# 注意是cv2而不是opencv

图像处理基础

在图像处理过程中,包含:读取图像显示图像保存图像 这三个最基本的操作。本文剩余部分将简单的介绍实现这三个操作,后续博文将做详细介绍。

读取图像

OpenCV 提供函数 cv2.imread() 来读取图像;
该函数的一般形式如下:

image_arr = cv2.imread(filename, flags)
  • filename:要读取的图像文件路径;
  • flags:可选参数,用于指定如何读取图像:
    • cv2.IMREAD_COLOR:默认值,读取 RGB 三通道图像;
    • cv2.IMREAD_GRAYSCALE:读取图像,并调整为单通道的灰度图像;
    • cv2.IMREAD_UNCHANGED:读取图像,保持原始所有通道信息;

读取图像后,该图像将以数字矩阵的形式保存在内存中的 image_arr 变量中。这个数字矩阵包含了图像的像素信息,可以进行各种图像处理和分析操作,如后续博文将会讲到的图像转换、滤波、边缘检测等。

e . g . e.g. e.g. 读取一张图像以及其灰度图矩阵信息;

import cv2
image_arr_1 = cv2.imread("universe.jpg")
image_arr_2 = cv2.imread("universe.jpg", cv2.IMREAD_GRAYSCALE)
print("原图矩阵为:", image_arr_1)
print("灰度图矩阵为:", image_arr_2)

显示图像

在完成图像处理操作后,如果你想展示图像的样子,可以使用 OpenCV 提供的 imshow() 函数。这个函数会显示一个窗口,其中包含了处理后的图像。

import cv2

# 读取图像
image_arr = cv2.imread('universe.jpg', cv2.IMREAD_UNCHANGED)

# 展示图像
cv2.imshow('Image Of Universe', image_arr)

# 等待用户输入,0 表示永久等待
cv2.waitKey(0)

# 关闭所有窗口
cv2.destroyAllWindows()

保存图像

OpenCV 使用 imwrite() 函数可以实现图像的保存。该函数接收四个参数:输入图像、保存的文件路径、图像的编码方式以及图像的质量分数(可选)。

e . g . e.g. e.g. 以下是使用 Python 进行图像保存的示例代码:

import cv2

# 读取图像
img = cv2.imread('universe.jpg')

# 设置保存图像的路径、编码方式以及质量分数(可选)
save_path = 'output.jpg'
encodeing = cv2.IMREAD_COLOR  # 图像编码方式,可选CV2_IMREAD_GRAYSCALE为灰度图像
quality = 95  # 图像质量分数,可选,默认为95

# 保存图像
cv2.imwrite(save_path, img, encodeing, quality)
01-23 06:19