他的回复:
#include #include #include #include #include "camera.h" // 声明 CameraInit、CameraWaitEvents、CameraGetData、CameraData #include "ascend_hal.h" // 声明全局 halMbufFree using mdc::camera::CameraInit; using mdc::camera::CameraWaitEvents; using mdc::camera::CameraGetData; using mdc::camera::CameraData; int main(int argc, char* argv[]) { // 默认参数 uint32_t camId = 21; int32_t timeoutWait = 1000; int32_t timeoutGet = 1000; // 简单命令行解析 for (int i = 1; i argc; ++i) { if (std::strcmp(argv[i], "--camera") == 0 && i+1 argc) { camId = static_cast(std::stoi(argv[++i])); } else if (std::strcmp(argv[i], "--wait-timeout") == 0 && i+1 argc) { timeoutWait = std::stoi(argv[++i]); } else if (std::strcmp(argv[i], "--get-timeout") == 0 && i+1 argc) { timeoutGet = std::stoi(argv[++i]); } else { std::cerr "Usage: " argv[0] " [--camera ID] [--wait-timeout ms] [--get-timeout ms]\n"; return -1; } } // 1. 初始化摄像头 std::vector initList = { camId }; int32_t ret = CameraInit(initList); if (ret != 0) { std::cerr "CameraInit failed: " ret "\n"; return -1; } // // 2. 等待事件 // auto ready = CameraWaitEvents(timeoutWait); // if (ready.empty()) { // std::cerr "No camera event\n"; // return -1; // } // // 3. 获取数据 // std::vector frames; // ret = CameraGetData(camId, frames, timeoutGet); // if (ret != 0 || frames.empty()) { // std::cerr "CameraGetData failed: " ret "\n"; // return -1; // } // // 4. 打印第一帧信息 —— 替换下列字段为实际名称 // CameraData &f = frames[0]; // std::cout "Camera ID: " /* f.realCameraIdField */ 0 "\n"; // std::cout "Timestamp: " /* f.realTimestampField */ 0 "\n"; // std::cout "Image size: " /* f.realImgSizeField */ 0 "\n"; // std::cout "Meta size: " /* f.realMetaSizeField */ 0 "\n"; // // 5. (可选)解析 metaBuf // // const uint8_t* meta = f.realMetaBufPtr; // TODO // // size_t msize = f.realMetaSizeField; // TODO // // for (size_t off = 0; off + 1 msize; off += 2) { // // uint16_t word = (uint16_t(meta[off]) 8) | uint16_t(meta[off+1]); // // std::cout "0x" std::hex word " "; // // } // // std::cout std::dec "\n"; // // 6. 释放缓冲 // for (auto &d : frames) { // // TODO: 替换为实际 buf 指针成员 // // ::halMbufFree(d.realImgBufPtr); // // ::halMbufFree(d.realMetaBufPtr); // } return 0; } 现在代码仅保留初始化部分,会出现缺少链接库