.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 文件夹里")