Subversion Repositories seema-scanner

Rev

Rev 228 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 228 Rev 242
Line 26... Line 26...
26
static QImage cvMat2qImage(cv::Mat mat){
26
static QImage cvMat2qImage(cv::Mat mat){
27
 
27
 
28
    // 8-bits unsigned, raw bayer image
28
    // 8-bits unsigned, raw bayer image
29
    if(mat.type()==CV_8UC1) {
29
    if(mat.type()==CV_8UC1) {
30
        cv::Mat rgb;
30
        cv::Mat rgb;
31
        cv::cvtColor(mat, rgb, CV_BayerBG2RGB);
31
        cv::cvtColor(mat, rgb, cv::COLOR_BayerBG2RGB);
32
        QImage img((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);
32
        QImage img((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);
33
        img = img.copy();
33
        img = img.copy();
34
        return img;
34
        return img;
35
    // 8-bit unsigned rgb image
35
    // 8-bit unsigned rgb image
36
    } else if(mat.type()==CV_8UC3) {
36
    } else if(mat.type()==CV_8UC3) {
Line 41... Line 41...
41
    } else if(mat.type()==CV_16UC1) {
41
    } else if(mat.type()==CV_16UC1) {
42
        cv::Mat mat8bit = mat.clone();
42
        cv::Mat mat8bit = mat.clone();
43
        cvtools::rshift(mat8bit, 8);
43
        cvtools::rshift(mat8bit, 8);
44
        mat8bit.convertTo(mat8bit, CV_8UC1);
44
        mat8bit.convertTo(mat8bit, CV_8UC1);
45
        cv::Mat rgb;
45
        cv::Mat rgb;
46
        cv::cvtColor(mat8bit, rgb, CV_BayerBG2RGB);
46
        cv::cvtColor(mat8bit, rgb, cv::COLOR_BayerBG2RGB);
47
        QImage img((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);
47
        QImage img((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);
48
        img = img.copy();
48
        img = img.copy();
49
        return img;
49
        return img;
50
    // 16-bit unsigned rgb image
50
    // 16-bit unsigned rgb image
51
    } else if(mat.type()==CV_16UC3) {
51
    } else if(mat.type()==CV_16UC3) {
52
        mat.convertTo(mat, CV_8UC3, 1.0/256.0);
52
        mat.convertTo(mat, CV_8UC3, 1.0/256.0);
53
        return cvMat2qImage(mat);
53
        return cvMat2qImage(mat);
54
    // 32bit floating point gray-scale image
54
    // 32bit bayer image
55
    } else if(mat.type()==CV_32FC1) {
55
    } else if(mat.type()==CV_32FC1) {
56
        cv::Mat rgb(mat.size(), CV_32FC3);
56
        cv::Mat rgb(mat.size(), CV_32FC3);
57
        cv::cvtColor(mat, rgb, cv::COLOR_GRAY2RGB);
57
        cv::cvtColor(mat, rgb, cv::COLOR_BayerBG2RGB);
58
        QImage img((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB32);
58
        QImage img((const uchar*)rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB32);
59
        img = img.copy();
59
        img = img.copy();
60
        return img;
60
        return img;
-
 
61
    } else if(mat.type()==CV_32FC3) {
-
 
62
        QImage img((const uchar*)mat.data, mat.cols, mat.rows, mat.step, QImage::Format_RGB32);
-
 
63
        img = img.copy();
-
 
64
        return img;
61
    } else {
65
    } else {
62
        std::cerr << "SMVideoWidget: cv::Mat could not be converted to QImage!";
66
        std::cerr << "SMVideoWidget: cv::Mat could not be converted to QImage!";
63
        return QImage();
67
        return QImage();
64
    }
68
    }
65
 
69