嵌入式人工智能(OpenCV-图像的基本操作)

ops/2024/10/18 7:56:57/

1、OpenCV简介

人工智能一个重要方面的应用就是计算机视觉,而OpenCV正是基于BSD许可发行的开源、跨平台的计算机视觉库。它可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1]它轻量级而且高效——由一系列 C 函数和C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

计算机视觉包括底层的图像处理、中层的图像分析以及高层的视觉技术,OpenCV已经延伸到计算机视觉的每个领域,其功能涵盖每个研究方向。应用领域包括人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶。

2、图像处理过程

图像处理指对图像进行分析、加工和处理,使其满足视觉、心理、或其他要求的技术、图像处理是信号处理在图像领域上的一个应用。。当前大多是图像是以数字形式存储,因为图像处理又称数字图像处理。

(1)导入图像

(2)去噪处理

(3)图像增强

(4)图像复原

(5)彩色图像转灰度

(6)灰度图转二值图

(7)边缘检测/分割

(8)直方图匹配/轮廓匹配

3、图像的载入、显示、转化为灰度图

(1)OpenCV安装

OpenCV库在Python中安装和导入非常方便

pip install opencv-python就可以了,安装完可以查看版本

import cv2
print(cv2.__version__)

(2)图像的获取

图像的获取可以加载本地图片,也可以从摄像头读取一张图片。

在本地新建一个图片1.png

 上传给树莓派SSH服务器。然后通过imead读取,imshow显示。

image = cv2.imread('1.png')
print(type(image))
# 显示读取的图像,窗口名称为buster
cv2.imshow('buster', image)
# 使程序停留,等待任意键按下,参数表示停留的时间,0表示无限长
k = cv2.waitKey(0)
# 按下ESC键(ASCII码为27)后,销毁所有窗口,终止程序
if k == 27:cv2.destroyAllWindows()

如果使用imshow函数,需要为当前的py文件在pycharm中开启SSH的Xserver显示功能。

可能会有同学报错,见下图。提示不支持验证协议。

 编辑 /etc/ssh/ssh_config文件,下面2行注释给去掉

然后在pycharm运行该文件,则正常显示了。

 注意红框的内容,这里显示的x、y的值是从图像上选择的像素点,距左边和上边的距离,RGB是三通道的值。

从摄像头获取图片,保存。保存的图片是放到树莓派的开发板上面。默认保存的图像分辨率为640*480

import cv2
cap = cv2.VideoCapture(0)
# cap.set(cv2.CAP_PROP_FRAME_WIDTH,1440)
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT,960)
while cap.isOpened() :# 摄像头工作时,读取一帧图像ret, frame = cap.read()# 显示图像窗口在树莓派的屏幕上cv2.imshow('Capture', frame)# 按下q键退出,s键保存图像,保存到树莓派上面key = cv2.waitKey(1)if key & 0x00FF == ord('s'):cv2.imwrite('imgshoot.jpg',frame)if key & 0x00FF == ord('q'):break

# cap.set(cv2.CAP_PROP_FRAME_WIDTH,1440)
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT,960)

cap.set用来设置图片的分辨率,由于开发板的处理能力相对较弱,一般图像的显示和存储、处理不用太高的分辨率,不然爆显存导致死机,程序中止等故障。除了分辨率控制图像大小,还有就是通过灰度图来控制图像大小。

# 将读取后的图片转换为灰度图片
img_gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

image = cv2.imread('1.png')
#创建一个窗口。可以调整窗口显示大小 cv2.WINDOW_NORMAL,也可以在初始化的时候给定大小
cv2.namedWindow('buster', cv2.WINDOW_NORMAL)
#cv2.resizeWindow('buster', 320, 240)
# 将读取后的图片转换为灰度图片
img_gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# 显示灰度图像
cv2.imshow("buster", img_gray)
key = cv2.waitKey(0)
# 保存灰度图像
cv2.imwrite("buster_gray.png", img_gray)

 灰度图就没有RGB三通道的值了。


http://www.ppmy.cn/ops/93142.html

相关文章

Python和AI库NumPy(三):数组形状与变换

目录 1. 数组的基础形状操作 1.1 查看数组的形状 1.2 改变数组的形状 2. 数组的转置与轴交换 2.1 数组的转置 2.2 交换数组的轴 3. 数组的合并与分割 3.1 数组的水平与垂直合并 3.2 数组的分割 4. 高级数组变换技巧 4.1 广播机制(Broadcasting) 4.2 使用expand_d…

24款奔驰C260升级原厂香氛负离子系统,淡淡的幽香

奔驰原厂香氛系统激活原车自带系统,将香气加藏储物盒中,通过系统调节与出风口相结合,再将香味传达至整个车厢,达到净化车厢空气的效果,让整个车厢更加绿色健康,清新淡雅。 产品功能:香氛负离子…

滑动窗口 | Java | (hot100) 力扣 3

力扣 3.无重复字符的最长子串 暴力法:双层for循环,i-j的字符查重 滑动窗口:因为这题被分在这个类别里,那么已知要用滑动窗口,思路应该是什么。 反正我想不出来…… 看了别人的题解写出来的出错点:特别容易…

奥威VS帆软(各有所长)

随着大数据时代的到来,商业智能BI软件成为了企业不可或缺的一部分。它们通过收集、整合、分析和展示数据,帮助企业更好地理解业务状况,做出更明智的决策。奥威BI和帆软BI都是备受瞩目的老牌BI软件,本文将详细对比这两大老牌BI软件…

【人工智能】【机器学习】-好书推荐之《Python神经网络编程》

目录 内容概览 编程环境 面向对象 学习目标 如果你是想要自学机器学习相关知识的读者,我相信看完这篇文章的介绍后,你会对机器学习有更清晰的认识。帮助你走进机器学习的殿堂。 《Python神经网络编程》(原书名:Make Your Own …

Ubuntu22.04 安装mysql5.7

一、卸载本地 Mysql //1、查看本地mysql依赖情况dpkg --list | grep mysql//2.卸载mysql-commonsudo apt remove mysql-common//3.卸载并清除mysql5.7sudo apt autoremove --purge mysql-server-5.7//4.清除残留数据dpkg -l | grep ^rc| awk {print$2}| sudo xargs dpkg -P//5…

Qt国际化

写在前面 在全球化的今天,软件应用的国际化变得尤为重要。 国际化不仅仅是翻译界面文本,更涉及到日期、时间、货币、数字格式等多方面的适应性调整。 Qt作为一个强大的跨平台应用开发框架,提供了丰富的国际化支持工具,使得开发者…

QSqlQueryModel与QSqlTableModel查询数据库

QSqlQueryModel 与 QSqlTableModel 项目中需要对数据进行查询与展示,数据量不大,使用的是sqlite数据库,将使用过程记录如下。 QSqlTableModel 适用于显示整个表的数据,使用方式如下: QSqlQuery query;//把数据库…