RK3568平台(opencv篇)opencv处理图像视频

一.读取图像文件并展示

灰度图像:

灰度图需要用 8 位二进制来表示,取值范围是 0-255。用 0 表示 0(黑色), 用 255 表示 1(白色),取值越大表示该点越亮。

RGB 彩色图像:

RGB 图像就是一张像素由三个值来表示的图片,三个值分别表示红、绿、蓝三种 颜色的程度。如果一个像素的红色程度是 255,其它两个颜色程度是 0,那么这个像素在我们 看来就是红色的,通过这三种颜色的搭配,我们可以配出 4294967296 种不同的颜色。

代码实践:

demo01_imread.py

复制代码
import cv2  # opencv的缩写为cv2,导入opencv

img1 = cv2.imread('lena.png', 0)  # flags参数为0,返回灰色图像
img2 = cv2.imread('lena.png', 1)  # flags参数为1,返回彩色图像
cv2.imshow('灰度图', img1)  # imshow函数现实处理结果
cv2.imshow('彩色图', img2)
cv2.waitKey(0)  # 等待下一次按键按下

cv2.imread()函数功能:读取图像文件。

函数原型:cv2.imread(filename,flags=None)

参数定义: 第一个参数 filename,指要加载的图片路径。 第二个参数,为载入标识,指定一个加载图像的颜色类型,默认值为 1。

flags 取值: CV_LOAD_IMAGE_UNCHANGED------等价取值为-1,这个标识在新版本中已被废置。 CV_LOAD_IMAGE_GRAYSCALE------等价取值为 0,返回灰色图像。 CV_LOAD_IMAGE_COLOR------等价取值为 1,返回彩色图像。 CV_LOAD_IMAGE_ANYDEPTH------等价取值为 2,若图像深度是 16 位或者 32 位,就返回对 应深度,否则,返回 8 位图像如果输入有冲突的标志,将采用较小的数字值。

imread()函数载入图像并展示。

二.写入图像文件信息

demo02_imwrite.py

复制代码
import cv2  # opencv的缩写为cv2,导入opencv

img = cv2.imread('lena.png', 0)  # flags参数为0,返回灰色图像
cv2.imshow('灰度图', img)  # imshow函数现实处理结果
cv2.imwrite('lena_gray.png', img)  # imwrite写入读取到的图像并命名为lena_gray.png
cv2.waitKey(0)  # 等待下一次按键按下

cv2.imwrite()函数功能: 写入图像文件信息。

函数原型: cv2.imwrite(filename,img,params=None)

参数定义: img_path_name:保存的文件名 img:文件对象 params:特定格式下保存的参数编码,一般情况下为 None。

三.读取视频文件

demo03_VideoCapture.py

复制代码
import cv2

video_capture = cv2.VideoCapture("test.mp4")  # 使用VideoCapture函数读取名为test.mp4的视频文件
frame_num = video_capture.get(cv2.CAP_PROP_FRAME_COUNT)  # 使用video_capture.get函数获取总帧数
print("总帧数为 %f" % frame_num)
fps = video_capture.get(cv2.CAP_PROP_FPS)  # ==>使用video_capture.get函数获取帧率
print("帧率为 %f" % fps)
width = video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)  # ==>使用video_capture.get函数获取视频宽度
print("视频宽度为 %f" % width)
height = video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT)  # ==>使用video_capture.get函数获取视频高度
print("视频高度为 %f" % height)

cv2.VideoCapture() 函数功能:初始化 VideoCapture 类并利用构造函数读入该视频的当前帧。

函数原型:cv2.VideoCapture(*args,**kwargs)

参数定义: 一般仅填入一个,即文件名。如果填入整数,则打开对应的捕获设备 ID。若为 0,则打 开默认摄像头。

VideoCapture.get 函数功能:返回该视频的 propld 所指定的属性。

函数原型:VideoCapture.get(self,propld)

参数定义: propld,为需要读取的视频属性参数位,一般以 cv2.CAP_PROP_ 开头,部分常用参数如 下表所示:

四.播放视频文件

demo04_videoplayback.py

复制代码
import cv2  # opencv的缩写为cv2,导入opencv

cap = cv2.VideoCapture(0)  # 使用VideoCapture函数读取名为test.mp4的视频文件
fps = cap.get(cv2.CAP_PROP_FPS)  # 使用video_capture.get函数获取帧率
while True:  # while循环,能持续播放读取到的视频
    ret, frame = cap.read()  # 使用read()函数读取图像的帧,一次循环读取一帧
    cv2.imshow("video", frame)  # 使用imshow()函数对读取到的帧进行显示
    if cv2.waitKey(int(1000 / fps)) & 0xFF == ord('q'):  # 设置视频播放完成和按下q键退出
        break
cap.release()  # 释放cap
cv2.destroyAllWindows()  # 关闭窗口,清除程序所占用的内存

python demo04_videoplayback.py 无法播放视频,待bug。。。

相关推荐
Cherry的跨界思维几秒前
【AI测试全栈:质量】40、数据平权之路:Python+Java+Vue全栈实战偏见检测与公平性测试
java·人工智能·python·机器学习·ai测试·ai全栈·ai测试全栈
北京盟通科技官方账号几秒前
从“人机交互”到“数字预演”:详解 HMI、SCADA 与虚拟调试的闭环架构
人工智能·人机交互·数字孪生·scada·系统集成·hmi·虚拟调试
工程师老罗4 分钟前
Pycharm下新建一个conda环境后,如何在该环境下安装包?
人工智能·python
飞Link7 分钟前
Spatiotemporal Filtering(时空滤波)详解:从理论到实战
人工智能·深度学习·机器学习·计算机视觉
virtaitech9 分钟前
云平台一键部署【Tencent-YouTu-Research/Youtu-LLM-2B】具备原生智能体能力
人工智能·深度学习·机器学习·ai·gpu·算力·云平台
爱蛙科技11 分钟前
第三代半导体:宽禁带半导体SiC、GaN
人工智能
weixin1997010801611 分钟前
马可波罗 item_get - 获取商品详情接口对接全攻略:从入门到精通
java·大数据·人工智能
yang0111100115 分钟前
论文总结 HVI: A New Color Space for Low-light Image Enhancement
图像处理·人工智能·学习·计算机视觉
我和我导针锋相队16 分钟前
在撰写项目书时,如何在有限的篇幅里平衡呈现“问题链”“合作证据链”和“创新落地计划”,避免内容冗余又能清晰传递核心信息?
大数据·运维·人工智能
wechat_Neal17 分钟前
智能汽车-大模型应用文献
人工智能·车载系统