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

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显示。

python 复制代码
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

python 复制代码
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)

python 复制代码
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三通道的值了。

相关推荐
GISer_Jing1 分钟前
Claude Code多Agent架构深度剖析
前端·人工智能·架构·自动化
小楼v2 分钟前
本周AI圈炸了(4.13 - 4.19):AI纳入教师资格考核、GPT-6来了、Claude反杀、机器人跑赢了人类
人工智能·gpt·ai·机器人·热点资讯·教资·opus 4.7
芝麻开门GEO4 分钟前
2026年Q2济南企业如何选择可靠的GEO服务商
大数据·人工智能·python
AI砖家4 分钟前
Claude Code 跳过确认完全指南:让 AI 自己完成开发任务
前端·人工智能·python·ai编程·代码规范
YJlio4 分钟前
CSDN AI数字营销实测体验:多平台账号一键分发到底好不好用?我做了一次完整实测
人工智能·windows·企业微信·火绒安全·系统备份·easyimagex
星河耀银海4 分钟前
AI算力需求:不同AI场景(图像、NLP)的算力要求
人工智能·自然语言处理
Lethehong7 分钟前
拒绝吃灰!手把手教你把“全能AI助理”无缝塞进微信/QQ,打造属于你的数字分身
人工智能·开源·蓝耘元生代·蓝耘maas·qwenpaw
Agent手记7 分钟前
医药代表拜访计划能否通过AI自动生成优化?2026Agent自动化实战解析
运维·人工智能·ai·自动化
wei_shuo11 分钟前
基于魔珐星云打造的AI护士数字人:7×24小时在线、专业健康咨询、语音随时交互
人工智能·ai数字人
搬石头的马农11 分钟前
Claude Code SpringBoot开发:从0到1搭建企业级项目的6个核心Skill
java·人工智能·spring boot·后端·ai编程