.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 文件夹里")
相关推荐
CCC:CarCrazeCurator10 小时前
Diffusion Transformer(DiT):原理、与 U-Net 对比及在视频生成中的深度应用
人工智能·音视频·transformer
山楂树の13 小时前
Video核心术语
学习·音视频
醒醒该学习了!14 小时前
AI生成视频与数字人
人工智能·音视频
ThinkPet15 小时前
记事-vue3项目整合Agora声网sdk实现RTC视频通话
vue.js·音视频·实时音视频
liyunlong-java16 小时前
Android 跳转系统相册选取图片/视频/音频/文档(适配全版本权限)
android·gitee·音视频
ACP广源盛1392462567316 小时前
GSV2231@ACP#三屏扩展旗舰芯片,TRAE SOLO 多任务并行开发核心引擎
运维·网络·人工智能·嵌入式硬件·gpt·电脑·音视频
硅谷秋水17 小时前
τ0-WM:用于机器人操纵的统一视频-动作世界模型
人工智能·机器学习·计算机视觉·语言模型·机器人·音视频
阿洛学长1 天前
MoneyPrinterTurbo 深度解析与部署实战:AI 一键短视频生成,从源码到上线全攻略
人工智能·音视频
MR.欻2 天前
ZLMediaKit 源码分析(四):RTP/RTCP 协议栈实现分析
c++·人工智能·vscode·ffmpeg·音视频
运维栈记2 天前
Remotion + Claude Code:用自然语言创作视频的革命性突破
人工智能·ai·音视频