单片机毕业设计-基于 STC89C52 的多参数环境安防联动控制系统设计 基于 51 单片机的温光火焰多维度智能监控系统设计(017501)
2026/8/1 23:49:51
# # 查看当前格式 # v4l2-ctl -d /dev/video11 --get-fmt-video Format Video Capture Multiplanar: Width/Height : 2880/1616 Pixel Format : 'BG10' (10-bit Bayer BGBG/GRGR) Field : None Number of planes : 1 Flags : 000000bc Colorspace : Default Transfer Function : Unknown (000000a9) YCbCr/HSV Encoding: Unknown (000000da) Quantization : Default Plane 0 : Bytes per Line : 3840 Size Image : 6205440 #
# # 查看支持的所有格式 # v4l2-ctl -d /dev/video11 --list-formats ioctl: VIDIOC_ENUM_FMT Type: Video Capture Multiplanar [0]: 'RG10' (10-bit Bayer RGRG/GBGB) [1]: 'BA10' (10-bit Bayer GRGR/BGBG) [2]: 'GB10' (10-bit Bayer GBGB/RGRG) [3]: 'BG10' (10-bit Bayer BGBG/GRGR) [4]: 'Y10 ' (10-bit Greyscale) #
# 确保格式正确(当前已是BG10) # v4l2-ctl -d /dev/video11 --set-fmt-video=width=2880,height=1616,pixelformat=BG10
抓取raw图
v4l2-ctl -d /dev/video11 --stream-mmap --stream-count=1 --stream-to=/tmp/raw_BG10_2880x1616.raw
python3 << 'EOF' import struct def unpack_10bit(data): out = [] for i in range(0, len(data), 5): if i + 5 <= len(data): val = data[i] | (data[i+1] << 8) | (data[i+2] << 16) | (data[i+3] << 24) | (data[i+4] << 32) for j in range(4): pixel = (val >> (10*j)) & 0x3FF # 扩展到 16-bit: 左移6位 out.append(pixel << 6) return out def remove_padding(data, width, height, bpp=10, stride_padding=240): bytes_per_row = width * bpp // 8 total_row_bytes = bytes_per_row + stride_padding cleaned = bytearray() for row in range(height): start = row * total_row_bytes end = start + bytes_per_row cleaned.extend(data[start:end]) return bytes(cleaned) print("读取文件...") with open('./sensor2_frame.raw', 'rb') as f: data = f.read() print(f"原始大小: {len(data)} 字节") print("去除填充...") cleaned = remove_padding(data, 2880, 1616, bpp=10, stride_padding=240) print(f"去除填充后: {len(cleaned)} 字节") print("解包并扩展到16-bit...") pixels = unpack_10bit(cleaned) print(f"像素总数: {len(pixels)}") print(f"值范围: {min(pixels)} - {max(pixels)}") print("保存...") with open('./sensor2_frame_16bit_full.raw', 'wb') as f: for p in pixels: f.write(struct.pack('<H', p)) print("转换完成! 输出: sensor2_frame_16bit_full.raw") EOFsudo apt install rawtherapee
convert -size 2880x1616 -depth 16 gray:./sensor2_frame_16bit_full.raw output_16bit.tiff
rawtherapee output_16bit.tiff
如果太暗,可以调大曝光补偿为1.84试下