当前位置: 首页 > article >正文

通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪

用 手机自动化脚本,从自媒体上获取视频,一个商品对应几百个视频,我们把这几百个视频下载下来,进行分镜

视频切片,从自媒体上下载视频,通过cv库用直方图识别每个镜头进行切片。

下载多个图片进行视频的伪原创,加上智能Ai文字

混剪完之后再通过自动化技术上传到各大平台,这其中真正做到一个人管上千个账号

电商创业团队需要技术的对接
在这里插入图片描述

import cv2
import numpy as np


def calculate_histogram(frame):
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    hist = cv2.calcHist([gray_frame], [0], None, [256], [0, 256])
    return hist


def histogram_difference(hist1, hist2):
    return cv2.compareHist(hist1, hist2, cv2.HISTCMP_CORREL)

	def main(video_path, output_folder, max_duration=3):

    cap = cv2.VideoCapture(video_path)

    if not cap.isOpened():
        print("无法打开视频文件")
        return

    fps = cap.get(cv2.CAP_PROP_FPS)
    max_frames = int(max_duration * fps)

    ret, prev_frame = cap.read()
    if not ret:
        print("无法读取视频")
        return

    prev_hist = calculate_histogram(prev_frame)
    frame_count = 0
    scene_count = 0
    output_video = None

    while True:
        ret, frame = cap.read()
        if not ret:
            break

        frame_count += 1
        curr_hist = calculate_histogram(frame)
        similarity = histogram_difference(prev_hist, curr_hist)

        if similarity < 0.9:
            if output_video is not None:
                output_video.release()  # 释放之前的输出视频

            output_path = f"{output_folder}/scene_{scene_count}.mp4"
            output_video = cv2.VideoWriter(output_path, cv2.VideoWriter_fourcc(*'mp4v'), fps,
                                           (int(cap.get(3)), int(cap.get(4))))
            scene_count += 1
            frame_count = 0  # 重置帧计数

        # 写入当前帧
        if output_video is not None:
            output_video.write(frame)

        if frame_count >= max_frames and output_video is not None:
            output_video.release()
            output_video = None

        prev_hist = curr_hist

    # 释放资源
    cap.release()
    if output_video is not None:
        output_video.release()


if __name__ == "__main__":
    main("linshi.mp4", "output_folder")


http://www.kler.cn/a/371599.html

相关文章:

  • [MySQL#6] 表的CRUD (1) | Create | Retrieve(查) | where
  • R语言中的Lasso回归:全面指南与实战案例
  • 时序动作定位 | CASE:基于聚类的弱监督时间动作定位前景与背景分离研究(ICCV 2023)
  • ZooKeeper的应用场景:深入探讨分布式系统中的多样化应用
  • 利用游戏引擎的优势
  • Android -- 调用系统相册之图片裁剪保存
  • 基于C语言实现的UDP服务器
  • Spring Boot 经典九设计模式全览
  • Linux 命令行参数 环境变量
  • 自己动手给ESP8285 / ESP8266 1MB 编译新版AT 固件
  • 第二代支付系统报文交换标准【大额支付系统分册】(版本1.5.6)
  • 【笔记】复数基础复数相乘的物理意义:旋转+缩放
  • synchronized基本用法、原理?
  • 论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection
  • es实现自动补全
  • k8s_Pod健康检查
  • Mamba应用领域
  • 【C++】踏上C++学习之旅(四):细说“内联函数“的那些事
  • 如何实现PHP的安全最大化
  • ETF申购赎回指南:详解注意事项与低费率券商推荐!
  • 双十一我都入手了啥大件?这几款超值好物分享给你
  • c++习题36-奇数单增序列
  • 【17】 傅立叶分析
  • Java项目实战II基于Spring Boot的小型诊疗预约平台(开发文档+数据库+源码)
  • 【LeetCode热题100】链表
  • 初识算法 · 前缀和(1)