rk平台怎么抓取raw图并在Ubuntu下显示
1、用v4l2抓取raw数据# # 查看当前格式 # 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-videowidth2880,height1616,pixelformatBG10抓取raw图v4l2-ctl -d /dev/video11 --stream-mmap --stream-count1 --stream-to/tmp/raw_BG10_2880x1616.raw2.将10bit raw图转换为16bit的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[i1] 8) | (data[i2] 16) | (data[i3] 24) | (data[i4] 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, bpp10, stride_padding240): 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, bpp10, stride_padding240) 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) EOF3.安装rawtherapeesudo apt install rawtherapee4.转换为rawtherapee可以显示的文件convert -size 2880x1616 -depth 16 gray:./sensor2_frame_16bit_full.raw output_16bit.tiff5. rawtherapee工具显示raw图rawtherapee output_16bit.tiff如果太暗可以调大曝光补偿为1.84试下