.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 文件夹里")
相关推荐
民乐团扒谱机5 小时前
【全流程实战】LibTV节点式AI视频工作流落地教程|从剧本到成片可复用流水线,新手/开发者双版本
人工智能·音视频
私人珍藏库10 小时前
[Android] 美颜通 -实时视频通话直播美颜
智能手机·app·音视频·软件·多功能
lpfasd12317 小时前
火山引擎 TOS 视频 `Content-Disposition: attachment` 排查实录
音视频·火山引擎
byte轻骑兵18 小时前
【LE Audio】CSIS精讲[1]: 从核心定义到协议基础,读懂多设备协同的底层逻辑
人工智能·音视频·人机交互·蓝牙耳机·le audio·低功耗蓝牙音频
中微极客19 小时前
从提示词到产品级视频:生成式AI的工程化实践与工具栈选型(LTX Studio实战)
人工智能·chatgpt·音视频
luoyayun3611 天前
Qt + FFmpeg 视频工具:视频一键压缩功能实现
qt·ffmpeg·音视频·视频压缩
中微极客2 天前
Kling AI 3.0:AI视频生成的工程化跃迁
人工智能·音视频
开开心心就好2 天前
免费格式转换工具视频音频文档都能转
人工智能·智能手机·ocr·电脑·音视频·散列表·启发式算法
USB_ABC2 天前
南京军区训练基地:混合矩阵赋能军事训练智慧化协同升级
矩阵·音视频
中微极客2 天前
Seedance 2.5深度解析:30秒4K视频生成与50路多模态参考的工程实践
人工智能·音视频