[решить] почему jetson-inference detectNet-> detect() возвращает 0 при вводе GpuMat

Я пытаюсь обнаружить объект в буфере изображения, например cv::GpuMat, с jetson detectNet::detect(), но он возвращает 0 объект, обнаруженный без ошибок при использовании loadImageRGBA() (эта функция загружает файл изображения, а не из буфера), поскольку ввод будет возвращать Обнаружен 1 объект

Я использую opencv 3.4.7 и последнюю версию jetson-inference

detectNet* net = detectNet::Create(netType);
    cv::Mat frame;
    const char* imagPath = "/opt/jetson-inference/data/002337.jpg";
    frame = cv::imread(imagPath);
    int    imgWidth  = frame.cols;
    int    imgHeight = frame.rows;
    float* imgCPU = NULL;
    float* imgCUDA1 = NULL;

    cv::cuda::GpuMat cvCUDA();
    cvCUDA.upload(frame);


    if( !loadImageRGBA(imagPath, (float4**)&imgCPU, (float4**)&imgCUDA1, &imgWidth, &imgHeight) )
    {
        printf("failed to load image '%s'\n", "/opt/jetson-inference/data/002337.jpg");
        return 0;
    }


    detectNet::Detection* detections = NULL;
    cout<<"error 1"<<endl;
    const int numDetections1 = net->Detect((float*)cvCUDA.data, imgWidth, imgHeight, &detections);
    const int numDetections = net->Detect((float*)imgCUDA1, imgWidth, imgHeight, &detections);
    cout<<"error 2"<<endl;
    //        // print out the detection results
    cout<<numDetections1<<" "<<numDetections<<" objects detected\n"<<endl;

Ожидайте: 1 обнаружение 1 объекта, но текущая проблема: 0 1 обнаружение объекта

soluition: cv::cvtColor(src,dst,cv::BGR2RGBA) // просто конвертируем изображение в RGBA, потому что ввод тензора равен float4

0 ответов

Другие вопросы по тегам