Exemplo n.º 1
0
void SegmentationImpl::loadInputImageColor()
{
    std::string fileName = inputSettings()->color();
    cv::Mat input = loadImage(fileName);

    if (!input.empty()) {
        if (input.type() != CV_8UC3) {
            LERRORF("Expected type '8UC3' for color image, but got '%s'.", matTypeToStr(input.type()).c_str());
        } else {
            // convert input image from 0 ... 255 to 0 ... 1
            input.convertTo(inputImageColor_, CV_32FC3, 1/255.0f, 0);
        }
    }
}
Exemplo n.º 2
0
void SegmentationImpl::saveDepthImage(std::string filename, cv::Mat image, bool normalize) const
{
    if (image.type() != CV_32FC1) {
        LERRORF("Expected type 'CV_32FC1' for depth image, but got '%s'.", matTypeToStr(image.type()).c_str());
    } else {
        cv::Mat tmp;
        if (normalize) {
            cv::normalize(image, tmp, 0, 65535, cv::NORM_MINMAX, CV_16UC1);
        } else {
            float scale = inputSettings()->depthScale();
            image.convertTo(tmp, CV_16UC1, scale, 0);
        }
        saveImage(filename, tmp);
    }
}
Exemplo n.º 3
0
void SegmentationImpl::loadInputImageGroundTruth()
{
    std::string fileName = replaceString(inputSettings()->color(), inputSettings()->colorMatch(), inputSettings()->groundTruthReplace());
    cv::Mat input = loadImage(fileName);

    if (!input.empty()) {
        switch (input.type()) {
        case CV_8UC1:
            inputImageGroundTruth_ = input;
            break;
        case CV_16UC1:
            input.convertTo(inputImageGroundTruth_, CV_8UC1, 1.0f, 0);
            break;
        default:
            LERRORF("Expected type CV_16UC1 or CV_16UC1 for ground truth image, but got '%s'.", matTypeToStr(input.type()).c_str());
        }
    }
}
Exemplo n.º 4
0
void SegmentationImpl::loadInputImageDepth()
{
    std::string fileName = replaceString(inputSettings()->color(), inputSettings()->colorMatch(), inputSettings()->depthReplace());
    cv::Mat input = loadImage(fileName);

    if (!input.empty()) {
        const float scale = inputSettings()->depthScale();
        switch (input.type()) {
        case CV_16UC1:
            input.convertTo(inputImageDepth_, CV_32FC1, 1/scale, 0);
            break;
        case CV_8UC1:
            input.convertTo(inputImageDepth_, CV_32FC1, 255/scale, 0);
            break;
        default:
            LERRORF("Expected type 'CV_16UC1' or 'CV_8UC1' for depth image, but got '%s'.", matTypeToStr(input.type()).c_str());
            break;
        }
    }
}
Exemplo n.º 5
0
GLenum _CheckGLError(const char* file, int line, const char* function)
{
  GLenum err = glGetError();

  if (err != GL_NO_ERROR) {
    QString errStr;
    switch (err) {
    case GL_INVALID_ENUM:
      errStr = "openGL invalid enumerant";
      break;
    case GL_INVALID_VALUE:
      errStr = "openGL invalid value";
      break;
    case GL_INVALID_OPERATION:
      errStr = "openGL invalid operation";
      break;
    case GL_INVALID_FRAMEBUFFER_OPERATION:
      errStr = "openGL invalid framebuffer operation";
      break;
    case GL_STACK_OVERFLOW:
      errStr = "openGL stack overflow";
      break;
    case GL_STACK_UNDERFLOW:
      errStr = "openGL stack underflow";
      break;
    case GL_OUT_OF_MEMORY:
      errStr = "openGL out of memory";
      break;
    default:
      errStr = "openGL unknown error";
      break;
    }

    LERRORF(file, line, function) << errStr;
  }

  return err;
}