Пример #1
0
void CameraWorker::doWork(){

    CameraFrame frame;
    unsigned int frameWidth, frameHeight;
    frameWidth = camera->getFrameWidth();
    frameHeight = camera->getFrameHeight();

    std::cout << "CameraWorker: opened camera " << frameWidth << " x " << frameHeight << std::endl << std::flush;


    camera->startCapture();

    _isWorking = true;
    int i = 0;
    while(_isWorking){

        frame = camera->getFrame();
        //frame = camera->lockFrame();
        cv::Mat frameCV(frame.height, frame.width, CV_8U, frame.memory);
        frameCV = frameCV.clone();

        // Emit new frame
        emit newFrame(frameCV);
        //std::cout << "frame" << i << std::endl << std::flush;

        i+=1;
        QApplication::processEvents();

   }

   camera->stopCapture();

    // Emit finished signal
    emit finished();
}
Пример #2
0
CameraFrame SLCameraVirtual::getFrame(){

    unsigned int depth = counter % encoder->getNPatterns();
    cv::Mat patternCV = encoder->getEncodingPattern(depth);

    // pick out first channel
    cv::Mat patternCVChannels[3];
    cv::split(patternCV, patternCVChannels);
    patternCV = patternCVChannels[0];

    // general repmat
    cv::Mat frameCV;
    frameCV = cv::repeat(patternCV, (frameHeight+patternCV.rows-1)/patternCV.rows, (frameWidth+patternCV.cols-1)/patternCV.cols);
    frameCV = frameCV(cv::Range(0, frameHeight), cv::Range(0, frameWidth));
    frameCV = frameCV.clone();

    // add noise
    frameCV.convertTo(frameCV, CV_32F);
    cv::Mat noise(frameCV.size(), frameCV.type());
    cv::randn(noise, 0, 3);
    frameCV += noise;
    frameCV.convertTo(currentBuffer, CV_8U);
    counter++;

 //cv::imwrite("frameCV.png", frameCV);

    // return as CameraFrame struct
    CameraFrame frame;
    frame.height = currentBuffer.rows;
    frame.width = currentBuffer.cols;
    frame.memory = currentBuffer.data;
    frame.timeStamp = counter;
    frame.sizeBytes = currentBuffer.rows*currentBuffer.cols;

    return frame;
}