Python OpenCV 教学取得视频资讯

这篇教学会介绍使用OpenCV,取得影像的长宽尺寸、以及读取影像中某些像素的颜色数值。

因为程式中的OpenCV 会需要使用镜头或GPU,所以请使用本机环境( 参考:使用Python 虚拟环境) 或使用Anaconda Jupyter 进行实作( 参考:使用Anaconda ) ,并安装OpenCV 函式库( 参考:OpenCV函式库)。

shape 取得长宽与色版数量

使用OpenCV 的imread() 方法读取的影像后,透过shape 属性,能取得影像的宽、长和色版数量,通常色版数量( 色彩通道) 会由R、G、B 色光三原色组成,如果影像不具有三个色版,则只会取得宽与长。

复制代码
import cv2
img = cv2.imread('meme.jpg')
print(img.shape)            # 得到 (360, 480, 3)
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)              # 按下任意键停止
cv2.destroyAllWindows()

size 取得像素总数

使用OpenCV 的imread() 方法读取的影像后,透过size 属性,能取得影像的像素总数,像素总数为「宽x 长x 色版数量」

复制代码
import cv2
img = cv2.imread('meme.jpg')
print(img.size)            # 518400 ( 360x480x3 )
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

dtype 取得数据类型

使用OpenCV 的imread() 方法读取的影像后,透过dtype 属性,能取得影像的数据类型

复制代码
import cv2
img = cv2.imread('meme.jpg')
print(img.dtype)            # uint8
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

取得每个像素的色彩资讯

使用OpenCV 的imread() 方法读取的影像后,可以印出图片的「三维阵列」资讯,以下方的程式码为例,可以印出一张4x4 的图片阵列,可以看到每一个像素都有B、G、R 三个颜色资讯,颜色范围均是0~255 ( 范例图片将4x4 放大,比较容易理解)。

复制代码
import cv2
img = cv2.imread('meme-test.png')
print(img)
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

了解原理后,也可以使用变数来装载图片的色彩资讯。

复制代码
import cv2
img = cv2.imread('meme-test.png')
b, g, r = cv2.split(img)
print(b)
print(g)
print(r)
cv2.imshow('oxxostudio', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

既然能取得图片的每个像素资讯,就能针对这些像素进行修改,举例来说,透过阵列切片赋值的方法,就能将一张去除图片中的红色、绿色或蓝色。

复制代码
import cv2
img_blue = cv2.imread('meme.jpg')
img_green = cv2.imread('meme.jpg')
img_red = cv2.imread('meme.jpg')
img_blue[:,:,1] = 0    # 将绿色设为 0
img_blue[:,:,2] = 0    # 将红色设为 0
img_green[:,:,0] = 0   # 将蓝色设为 0
img_green[:,:,2] = 0   # 将红色设为 0
img_red[:,:,0] = 0     # 将蓝色设为 0
img_red[:,:,1] = 0     # 将绿色设为 0
cv2.imshow('oxxostudio blue', img_blue)
cv2.imshow('oxxostudio green', img_green)
cv2.imshow('oxxostudio red', img_red)
cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
weixin_440730507 分钟前
线程02-并发串行-互斥锁-Semaphore-Event
python·thread
张小凡vip1 小时前
python--爬虫--经验积累的遇到的坑
开发语言·爬虫·python
毕业设计7031 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
xifangge20252 小时前
AGENTS.md 怎么写?涵盖 Java、Python、Vue、Go 的 8 套开箱即用模板
java·vue.js·python
大草原的小灰灰2 小时前
Python基础语法
开发语言·python
小葱炖豆腐3 小时前
python绘制excel折线图
python·excel·numpy·pandas·matplotlib
Pocker_Spades_A3 小时前
视频不用再一张张截图:ClipSketch AI 把关键画面转成漫画,还能顺手生成文案
人工智能·音视频
星辰徐哥3 小时前
本地视频预览别只自己看:把Remotion动效项目发给客户远程验收
docker·ai·node.js·html·音视频·react·remotion
镜像视界(浙江)科技有限公司3 小时前
《视频孪生之上:二维展示终结,三维空间计算重构城市逻辑》——跨摄像连续表达 × 三角测量厘米级定位 × 动态轨迹建模,构建新一代城市空间
大数据·人工智能·算法·矩阵·音视频·空间计算
你不是我我4 小时前
【AI 测评】想用自己的声音给视频配音?Index-TTS本地部署这样做
人工智能·音视频