如何使用CV_CAP_PROP_FOURCC?

时间:2014-03-14 00:30:57

标签: c++ c opencv

看起来很简单,但我无法让它发挥作用。我想使用

打印出图像的格式
cvGetCaptureProperty(image, CV_CAP_PROP_FOURCC)

其中image是CvCapture结构的对象。 该函数返回double。我确实将它转换为char *,以便我可以打印出格式,但它没有用。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

获取double*并将其转换为:

double f = cvGetCaptureProperty(image, CV_CAP_PROP_FOURCC);
char* fourcc = (char*) (&f); // reinterpret_cast

但是,this OpenCV highgui tutorial建议使用C ++接口:

int ex = static_cast<int>(inputVideo.get(CV_CAP_PROP_FOURCC));

// Transform from int to char via Bitwise operators
char EXT[] = {(char)(ex & 0XFF),(char)((ex & 0XFF00) >> 8),(char)((ex & 0XFF0000) >> 16),(char)((ex & 0XFF000000) >> 24),0};

当然,您使用get代替cvGetCaptureProperty方法。

答案 1 :(得分:0)

您可以使用以下功能:

// http://mkonrad.net/2014/06/24/cvvideocamera-vs-native-ios-camera-apis.html
void fourCCStringFromCode(int code, char fourCC[5]) {
    for (int i = 0; i < 4; i++) {
        fourCC[3 - i] = code >> (i * 8);
    }
    fourCC[4] = '\0';
}

例如:

    double f = cvGetCaptureProperty(capture, CV_CAP_PROP_FOURCC);
    printf("fourcc=%d\n", f); // outputs fourcc=6
    char fourcc[5];
    fourCCStringFromCode((int)f, fourcc);
    printf("fourcc=%s\n", fourcc); // outputs fourcc=DIVX