.raw后缀的文件转为jpg(压缩视频流转图片)

.raw后缀的文件转为jpg(压缩视频流转图片)

1.单.raw后缀文件转为jpg

bash 复制代码
import cv2
import numpy as np
import os

# 你的文件
raw_file = "5155.raw"
out_img = "FINAL_NORMAL_IMAGE.jpg"

# 读取裸流
with open(raw_file, "rb") as f:
    raw_data = f.read()

# 写入临时 .h264 文件(工业摄像头最常见格式)
temp_h264 = "temp.h264"
with open(temp_h264, "wb") as f:
    f.write(raw_data)

# 用 OpenCV + FFMPEG 硬解码视频流
cap = cv2.VideoCapture(temp_h264)
success = False

if cap.isOpened():
    ret, frame = cap.read()
    if ret:
        cv2.imwrite(out_img, frame)
        print("✅ 成功!正常图片已保存为:FINAL_NORMAL_IMAGE.jpg")
        success = True
    cap.release()

# 如果 H264 失败,尝试 H265
if not success:
    temp_265 = "temp.h265"
    with open(temp_265, "wb") as f:
        f.write(raw_data)
    
    cap = cv2.VideoCapture(temp_265)
    if cap.isOpened():
        ret, frame = cap.read()
        if ret:
            cv2.imwrite(out_img, frame)
            print("✅ 成功!正常图片已保存为:FINAL_NORMAL_IMAGE.jpg")
        cap.release()

# 清理临时文件
try:
    os.remove("temp.h264")
    os.remove("temp.h265")
except:
    pass

if not success:
    print("\n⚠️  你的摄像头流是:标准 YUV 裸流")
    print("我马上给你写专用版本!")

2.批量.raw后缀文件转jpg

bash 复制代码
import cv2
import os

# ===================== 配置 =====================
RAW_FOLDER   = "."          # .raw 所在文件夹(. 表示当前目录)
OUTPUT_FOLDER = "raw_images" # 输出图片保存到这里
TEMP_NAME    = "_temp.h264"
# ==================================================

# 创建输出文件夹
os.makedirs(OUTPUT_FOLDER, exist_ok=True)

# 遍历所有 .raw 文件
for fname in os.listdir(RAW_FOLDER):
    if fname.lower().endswith(".raw"):
        print(f"正在处理:{fname}")
        
        raw_path  = os.path.join(RAW_FOLDER, fname)
        save_path = os.path.join(OUTPUT_FOLDER, os.path.splitext(fname)[0] + ".jpg")

        # 读取裸流 → 写入临时 H264
        with open(raw_path, "rb") as f:
            data = f.read()
        with open(TEMP_NAME, "wb") as f:
            f.write(data)

        # 解码第一帧
        cap = cv2.VideoCapture(TEMP_NAME)
        ret, frame = cap.read()
        if ret:
            cv2.imwrite(save_path, frame)
            print(f"✅ 保存成功:{save_path}")
        else:
            print(f"❌ 解码失败:{fname}")
        
        cap.release()

# 清理临时文件
if os.path.exists(TEMP_NAME):
    os.remove(TEMP_NAME)

print("\n🎉 全部批量转换完成!图片在 raw_images 文件夹里")
相关推荐
feasibility.6 小时前
不装Claude Code,WorkBuddy也能做视频,Remotion skill告别抽卡(含安装与使用)
人工智能·aigc·音视频·agi·skill·remotion·workbuddy
AI视频工具指南9 小时前
一个人能做 AI 短剧吗?实际要做哪些决定
人工智能·aigc·音视频·1024程序员节
开开心心就好10 小时前
本地文件搜索工具,双击Ctrl就能呼出搜索
java·服务器·前端·支持向量机·ffmpeg·音视频·模拟退火算法
小豆庄10 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
李永奉11 小时前
杰理可视化SDK开发-音频录制功能使用教程
笔记·单片机·嵌入式硬件·mcu·物联网·音视频
_YouziTech_11 小时前
【STM32+MAX98357】MP3转PCM存入Flash并控制音频输出
stm32·单片机·音视频·内存·pcm·i2s·wav
yangmu320312 小时前
万字长文拆解:AI视频生成(SVD/Sora类)的底层技术原理与实现路径
人工智能·音视频
xierui12312312 小时前
视频Agent的声音编排:原声、TTS、ASR与背景音乐怎样分工
人工智能·音视频
HY小宝F13 小时前
智能摄像头系统 30 天学习计划 Day 09:用 RTSP 把视频送到网络
网络·学习·音视频
美狐美颜SDK开放平台1 天前
准备开发直播APP?视频美颜SDK接入前的十项检查清单
android·ios·音视频·直播美颜sdk·视频美颜sdk