我是使用python进行视频处理的初学者。在
我有一个原始的视频数据从相机捕捉,我需要检查视频中是否有明亮或黑暗的帧。在
到目前为止,我所取得的成就是,我可以在python中使用numpy读取原始视频。 下面是我的代码。在
import numpy as np
fd = open('my_video_file.raw', 'rb')
rows = 4800
cols = 6400
f = np.fromfile(fd, dtype=np.uint8,count = rows*cols)
im = f.reshape((rows,cols)) #notice row, column format
print im
fd.close()
输出:
^{pr2}$基于数组或numpy输出,是否可以检查原始视频数据是否有暗(不太亮)帧。在
另外,请告诉我数字输出(打印im)是什么意思? 如果你有任何链接,我可以参考,这是非常欢迎。在
只是对你的问题有一点了解。(您可能需要阅读更多关于数字图像表示的内容,e.g. here)。视频的帧是以
uint8
格式读取的,也就是说,像素是用0到255的值编码的。在通常,较高的值表示较亮的像素。根据你的视频,你可以有彩色或非彩色帧@Batyrkhan Saduanov提到。所以你要做的是定义最低和最高级别来声明一个帧为“暗”或“亮”。在
在非彩色的情况下,您可以很容易地使用每个帧的平均像素值,asign阈值级别如下所示:
如果你有带红色、绿色和蓝色通道的彩色帧,即NxMx3矩阵,那么你可以将这个矩阵从RGB表示转换为HSV(色调、饱和度、值)表示,也就是NxMx3矩阵。然后你可以从这个矩阵中取值页,即这个矩阵的第三个通道,计算这个矩阵中所有元素的平均值。设置任何阈值,如0.5,如果平均值小于此值,则此帧可视为暗。在
阅读HSVhere。在
要将RGB向量转换为HSV向量,可以使用matplotlib.colors.rgb_to_hsv(arr)函数。在
相关问题 更多 >
编程相关推荐