视频中图片和声音物理要素的提取

这里写自定义目录标题

图片中RGB,HSV,Lab特征值的提取,python的实现
下面展示一些 内联代码片

# -*- coding: utf-8 -*-
import cv2
import pandas as pd
import os

## 判断是否存在文件夹
def dir_out(path_out):
    folder = os.path.exists(path_out)
    if not folder:  
        os.makedirs(path_out) 
        print("---  new folder...  ---")
        print("---  OK  ---")
    else:
        print("---  There is this folder!  ---")
## 使用cv2读取视频中的图片信息,并保存csv文件        
def extract_colors_from_videos(filenames, names):
    for filename, name in zip(filenames, names):
        print(filename, name)
        # 打开视频
        cap = cv2.VideoCapture(filename)
        frame_cnt = 0
        # 读取每一帧
        f_index = [];gray_avg = [];r_avg = [];g_avg = [];b_avg = [];h_avg = [];s_avg = [];v_avg = [];l_avg = [];alpha_avg = [];beta_avg = []
        while True:
            ret, frame = cap.read() 
            if ret: #如果成功的话,打印每帧的次数,图片的尺寸,这个视频的帧数
                print("frame_cnt:", frame_cnt, "image_size:", len(frame[0]), len(frame))
                frame_cnt += 1 
                gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 转换为灰度
                rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 转换为 RGB
                hsv_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) # 转换为 HSV
                lab_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2LAB)  # 转换为 LAB
                # 分离每个特征值
                r, g, b = cv2.split(rgb_frame)
                h, s, v = cv2.split(hsv_frame)
                l, alpha, beta = cv2.split(lab_frame)
                # 整张图片的像素求(mean=平均值,或者std=均差)
                f_index.append(frame_cnt)
                # gray_avg.append(gray_frame.std());r_avg.append(r.std());g_avg.append(g.std())
                # b_avg.append(b.std());h_avg.append(h.std());s_avg.append(s.std());v_avg.append(v.std());l_avg.append(l.std())
                # alpha_avg.append(alpha.std());beta_avg.append(beta.std())
                gray_avg.append(gray_frame.mean());r_avg.append(r.mean());g_avg.append(g.mean())
                b_avg.append(b.mean());h_avg.append(h.mean());s_avg.append(s.mean());v_avg.append(v.mean());l_avg.append(l.mean())
                alpha_avg.append(alpha.mean());beta_avg.append(beta.mean())
            else: # 如果是最后,终止
                break 
        # 写到csv文件中
        data = {'frame':f_index,'gray':gray_avg, 'r': r_avg, 'g': g_avg, 'b': b_avg, 'h': h_avg, 's': s_avg, 'v': v_avg, 'l': l_avg, 'alpha': alpha_avg, 'beta': beta_avg}
        cols = ['frame','gray','r', 'g', 'b', 'h', 's', 'v', 'l', 'alpha', 'beta']
        result = pd.DataFrame(data, columns=cols)
        result.to_csv(path_out + name +'_image.csv')
        # 关闭视频
        cap.release()

dir = '视频的文件夹地址'
filenames = []
names = []
for file in os.listdir(dir):
    if file.endswith(".mp4"):
        filenames.append(dir + file)
        names.append(file.split(".")[0])
path_out = '储存csv文件的地址'
# dir_out(path_out)
extract_colors_from_videos(filenames, names)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值