新鲜和有经验的 10 大令人兴奋的 OpenCV 项目创意和主题 [2022]

已发表: 2021-05-27

OpenCV 或开源计算机视觉库是一个强大的机器学习和基于人工智能的库,用于开发和解决计算机视觉问题。 计算机视觉包括训练计算机理解和理解视觉世界、识别元素并使用深度学习模型对其做出响应。 当今世界各地的企业都在图像处理、处理、面部检测、语音识别、运动跟踪和对象检测中利用它。

谷歌、Facebook、微软和英特尔等公司已经部署 OpenCV 来开发计算机视觉应用程序。 马克·扎克伯格在2015 年的一次采访中说:“如果我们能够制造出能够理解图像中的内容并告诉盲人否则无法看到该图像的计算机,那也将是非常了不起的。”

如今,OpenCV 技术已被证明是盲人或视障人士的一项突破。 它使他们能够熟悉陌生的环境并识别附近的物体和人,以克服这种视力障碍。 计算机视觉也是自动驾驶汽车和智能运动传感器设备背后的技术。

如果您正在关注计算机视觉领域的职业,这里有十个有趣的开放式简历项目,可帮助您获得真实世界的经验。 那么,让我们开始吧!

目录

2022 年要签出的 10 大开放式 CV 项目

项目 1:使用 EdgeML 检测肺炎

这个 OpenCV 项目旨在在您的 Raspberry Pi 上部署基于 AI 的肺炎检测软件。 它使用边缘机器学习系统,使用 Balena 的多容器将带摄像头的 Raspberry Pi 转换为肺炎分类器。

第二个容器被添加到 Balena,它在 Node.js 服务器中运行 Edge Impulse WebAssembly 推理引擎。 两个容器都通过 WebSockets 进行通信,以使 BalenaCam 能够在网页上实时流式传输来自摄像头的每一秒提要。

该项目使用的软件和工具包括 OpenCV、Edge Impulse Studio、TensorFlow Lite、GitHub Desktop、balenaCloud、Microsoft VS Code 和 Docker。 支持 Balena Cam 的 Web 浏览器有 Chrome、Safari、Firefox 和 Edge。

您可以在此处查看该项目

项目 2:三星 SmartThings 的 OpenCV 供电运动传感器

首先,您需要一个 Raspberry Pi 3 和一个之前安装了 OpenCV 的工作 PiCam。 该项目旨在为基于计算机视觉的 SmartThings 创建一个自定义运动传感器并检测人脸。 收集的数据通过 LAN - UPnP 发送到 SmartThings。

为此,我们为 SmartThings 创建一个设备处理程序并对其进行编程。 然后,我们使用 Python 脚本访问摄像头图像并检测人脸,并与 SmartThings 发现的 Raspberry Pi 配对。 您还需要安装可以从 GitHub获取的imutils

此处查看项目的源代码

项目 3:计算摄影

该项目旨在创建全景图,消除图像中的噪点和不需要的对象,并提高在低光下点击的照片的可见度。 计算摄影涉及去除高斯白噪声和失真的照片去噪算法,过滤线条、物体和不需要的元素的照片恢复,以及通过识别字符来检测车牌的车牌识别

项目 4:使用 OpenCV 在图像上创建水印

该项目是一个教程,介绍如何使用开放的计算机视觉库在图像上创建水印——签名、徽标或水印,以防止滥用或侵犯版权。 它允许您使用 Python 的 OpenCV 库同时使用图像和文本为原始图像添加水印。 要使用图像创建水印,您需要定义透明功能和图像添加功能。 对于文本,我们导入PIL函数,然后调整文本水印位置。

您可以在此处查找项目

项目 5:寻找沃尔多

这是一个对象检测项目,通过训练 AI 从一系列不同的图像中识别 Waldo 来检测图像中的 Waldo。 然后我们采用静态方法通过像素匹配找到 Waldo。 这很重要,因为如果您使用模板图像,静态匹配将仅适用于该特定图像,而不适用于 Waldo 的新图像。

我们计算相关系数以执行模板匹配,它将 waldo 模板作为输入,并在要检测 Waldo 的图像上逐个像素地滑动它。 相关系数显示像素位置是“好”还是“坏”匹配。

您可以在此处查看该项目

项目 6:自动驾驶汽车

该项目使用 OpenCV 进行图像处理和处理来创建自动驾驶汽车。 要训​​练汽车自动驾驶,我们需要让它熟悉街道车道,找到它们并专注于它们。 这意味着机器学习模型需要通过精明的边缘检测和霍夫线变换来识别感兴趣区域的专业知识,以将像素与代表街道车道的图像分离。 这也需要掩蔽和计算平均斜率点。

这是用于识别感兴趣区域的源代码:

将 numpy 导入为 np

从 matplotlib 导入 pyplot 作为 plt

image = cv2.imread('../../images/input.jpg')

在[8]中:

图像.形状

输出[8]:

(830, 1245, 3)

在[11]中:

x, y = image.shape[:2]

在 [3] 中:

高度,宽度 = image.shape[:2]

# 获取起始像素坐标(裁剪矩形的左上角)

start_row, start_col = int(height * .25), int(width * .25)

# 获取结束像素坐标(右下)

end_row, end_col = int(height * .75), int(width * .75)

# 使用索引来裁剪出我们想要的图像部分

裁剪 = 图像 [start_row:end_row , start_col:end_col]

在[6]中:

行,列 = 1, 2

无花果,axs = plt.subplots(row, col, figsize=(15, 10))

fig.tight_layout()

axs[0].imshow(cv2.cvtColor(图像, cv2.COLOR_BGR2RGB))

axs[0].set_title('原图')

cv2.imwrite('original_image.png', 图片)

axs[1].imshow(cv2.cvtColor(裁剪,cv2.COLOR_BGR2RGB))

axs[1].set_title('裁剪图像')

cv2.imwrite('cropped_image.png', 裁剪)

plt.show()

这里查看项目

项目 7:视障人士的人脸和语音识别

该项目旨在通过使用 Raspberry Pi 2 Model B 和 Raspberry Pi 摄像头模块将面部输入转换为语音输出来帮助视障人士。 它是 2022 年最受欢迎的开放式 cv 项目之一。该软件允许盲人或视力障碍者在不熟悉的环境中检测标志、文本或人,在没有帮助的情况下导航。 该项目的其他要求包括使用 OpenCV 和 Python 进行人脸识别,并使用 GNU Octave 实现语音识别。

你可以在这里查看代码

项目8:智能考勤模型

智能考勤系统是 ZoomApp 等在线教育模型的便捷工具。 它通过实时监控学生的出勤情况,帮助您跟踪参加 Zoom 课程的学生。 所要做的就是从学生那里获取包含日期的屏幕截图并将其上传到 Excel 文件中。

您可以在此处找到此开放式 cv 项目的教程

项目 9:使用 OpenCV 换脸

换脸应用程序和过滤器已经在社交媒体上流行了一段时间。 从显得年轻和年老到将静止图像转换为动态图像,Instagram、Snapchat 和 FaceApp 之类的都赶上了潮流。 使用 OpenCV 和 Python 创建换脸应用程序相对容易。

这些步骤包括在使用 dlib 地标检测器形成的三角形的帮助下将源图像放置在目标图像上。

这里查看项目

项目 10:检测轮廓和计算形状

该项目检测给定形状的轮廓或轮廓以确定对象具有的形状类型。 例如,如果图片有瓶盖,您可以使用圆形来确定图像中有多少瓶盖。

这是这样做源代码

将 numpy 导入为 np

从 matplotlib 导入 pyplot 作为 plt

在 [2] 中:

image = cv2.imread('../../images/bottlecaps.jpg')

灰色 = cv2.cvtColor(图像,cv2.COLOR_BGR2GRAY)

plt.imshow(cv2.cvtColor(灰色, cv2.COLOR_BGR2RGB))

plt.title('瓶盖'); plt.show()

cv2.imwrite('bottlecaps_input.jpg', 灰色)

输出[2]:

真的

在 [3] 中:

模糊 = cv2.medianBlur(灰色,5)

circles = cv2.HoughCircles(模糊, cv2.HOUGH_GRADIENT, 1.5, 10)

对于我在圈子[0,:]:

# 画外圆

cv2.circle(image,(i[0], i[1]), i[2], (255, 0, 0), 2)

# 画圆心

cv2.circle(image, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(图像,cv2.COLOR_BGR2RGB))

plt.title('检测到的圆圈'); plt.show()

cv2.imwrite('detected_circles.jpg', 图片)

输出[3]:

真的

在 [ ]:

另一方面,计算形状涉及应用算法来分割图像和聚类数据以确定图像中的兴趣点。 我们在 approxPolyDP 函数的帮助下使用二进制和近似轮廓。

你可以在这里查看这个打开的 cv 项目

最后的想法

计算机视觉允许您开发广泛的有用应用程序,例如图像转换、平移、轮廓检测、图像分割、对象检测、对象跟踪和运动分析。

它还用于增强现实 (AR),通过学习定位面部、检测形状等来识别物体和面部。 您还可以使用简单的机器学习(例如信用卡阅读器、手写数字检测器或面部阅读器)创建有趣的 Open CV 项目。

然而,这需要了解数据科学和机器学习,尤其是深度学习。 如果您希望从事 ML 工程师、数据科学家或深度学习工程师的职业,我们建议您获得机器学习和深度学习的高级证书课程

本课程将帮助您精通统计、回归、聚类算法、神经网络、对象检测和手势识别的概念。 不仅如此,它将帮助您在 OpenCV、Python、TensorFlow、MySQL、Keras、Excel 和 NumPy 以及其他编程工具和库方面建立专业知识,并帮助您在人群中脱颖而出。

什么是 OpenCV?

OpenCV 是一个用于图像处理和计算机视觉的开源库,由英特尔维护,现在由开发人员社区提供支持。 作为开源,OpenCV 充分利用了整个开发者社区的力量。 该库旨在针对实时应用进行优化,例如对象识别、视频监控、人机交互、医疗和其他相关领域。

什么是物体检测?

对象检测是在图像或视频中定位不易检测的对象的过程。 这个问题通常被表述为分类的一个实例。 给定一张图像,我们想要对它的各种对象(如汽车、行人和建筑物)以及它们的边界框进行分类,这反过来又会给我们它们的位置。 对象检测是识别图像中对象的任务。 对象检测的目标是在图像中找到对象的位置(即定位它们)并估计它们的大小和形状。 对象检测是一个具有挑战性的问题,因为对象通常被部分遮挡,有时具有多种外观,以及图像中的非刚性变形。

最准确的物体检测算法是什么?

目标检测算法有很多,但没有一个是 100% 准确的。 目标检测算法面临数据过拟合问题。 事实上,一些计算机视觉研究人员声称对象检测算法不可能 100% 准确。 但是,有许多算法可以为给定的数据集提供准确的结果。 如果你买得起 GPU 机器,那么我们建议你使用基于 OpenCV 的 SVM 实现来进行对象检测。 它非常准确、快速并且适用于非常大的数据集。 但是,它不能很好地处理遮挡。 如果要构建人脸检测器,请在 OpenCV 中实现 Haar 级联分类器。