【OpenCV基础入门】简单图像操作

【OpenCV基础入门】简单图像操作

前言: OpenCV是一个开源的计算机视觉库,其中包含数百种计算机视觉算法, OpenCV库由C和C++语言编写,涵盖计算机视觉各个领域内的500多个函数,可以在多种操作系统上运行。它旨在提供一个简洁而又高效的接口,从而帮助开发人员快速地构建视觉应用。

​ 我们只需要专注于图像处理本身,而不需要掌握复杂的图像处理算法的具体实现细节。

环境使用jupyter notebook来进行

OpenCV库包含如下两部分。

​ 1. OpenCV主库:即通常安装的OpenCV库,该库是成熟稳定的,由核心的OpenCV团队维护。

​ 2. OpenCV贡献库:该扩展库的名称为opencv_contrib,主要由社区开发和维护,其包含的视觉应用比OpenCV主库更全面。需要注意的是,OpenCV贡献库中包含非OpenCV许可的部分,并且包含受专利保护的算法。因此,在使用该模块前需要特别注意。

OpenCV贡献库中包含了非常多的扩展模块,如:

​ ● bioinspired:生物视觉模块。

​ ● datasets:数据集读取模块。

​ ● dnn:深度神经网络模块。

​ ● face:人脸识别模块。

​ ● matlab:MATLAB接口模块。

​ ● stereo:双目立体匹配模块。

​ ● text:视觉文本匹配模块。

​ ● tracking:基于视觉的目标跟踪模块。

​ ● ximgpro:图像处理扩展模块。

​ ● xobjdetect:增强2D目标检测模块。

​ ● xphoto:计算摄影扩展模块。

1. 读取与显示图像

# 导入要使用到的包
import numpy as np
import matplotlib.pyplot as plt
import cv2
# B G R 通道
# opencv读取图片是BGR格式

img = cv2.imread("dog.jpg")  #示例图片(可以自定义要显示的图片文件)
# # 获取某个像素点的值
# px = img[100, 100]
# # 仅获取某个像素点的值
# bule = img[100, 100, 0]
# # 修改某个位置的像素值
# img[100, 100] = [255, 255, 255]

在显示图像时,最经常遇到的一个错误是“error: (-215:Assertion failed)size.width>0&& size.height>0 in function ‘cv::imshow’”

这通常是由于在读取文件时没有找到图像文件造成的。注意在你的jupyter notebook工作目录下存放好图像或视频文件。如果采用绝对路径,要注意图片路径是否正确。

为了避免上述错误,可以在读取图像前判断图像文件是否存在,并在显示图像前判断图像是否存在。

img
# 数组方式显示图片的rgb数据
# 输出图像的部分像素值
cv2.imshow("img", img)  # show方法显示该图像,第一个参数是指定窗口名称,第二个参数就是要显示的图像
# 设置窗口等待时间(单位:毫秒)  0表示任意键关闭
cv2.waitKey(0)  
cv2.destroyAllWindows() 
# 函数cv2.destroyWindow()用来释放(销毁)指定窗口,括号里的参数是窗口名称
# 而cv2.destroyAllWindows()用来释放(销毁)所有窗口

2.waitKey函数

函数cv2.waitKey()用来等待按键,当用户按下键盘后,该语句会被执行,并获取返回值。该函数能够让程序实现暂停功能。例如:

cv2.waitKey(0)  # 当没有按键按下时,该函数返回-1,如果有按键被按下,则返回该按键的ASCII码。
# 括号里的参数为窗口等待时间(单位:毫秒)  0表示任意键关闭

3. 保存图像

# 图像保存
# 这里先将img读取狗子图片的灰度图
img = cv2.imread("dog.jpg", cv2.IMREAD_GRAYSCALE)  # 第二个参数表示灰度图
cv2.imwrite("save_dog01.png", img)  # 保存img图片

该函数cv2.imwrite(),用来保存图像,若保存图像成功则返回值为True,保存不成功,则返回False。第一个参数为要保存的目标图片的。

这里图像可以从一种文件格式加载并保存为另一种格式

路径名称(绝对路径与相对路径取决于要保存在当前工作目录下,还是另存到其他位置),第二个参数是被保存到图像名称。

推荐大家可以去通过书籍,电子文档去学习关于计算机视觉的知识

拓展: OpenCV官方文档_w3cschool (这里面都是基于底层的设计,有一定难度)

​ OpenCV (github.com) (Github里的cv库)

你可能感兴趣的:(OpenCV,opencv,计算机视觉,人工智能,python,jupter)