这看起来很简单,但我不能让它工作。我想通过使用打印出图像的格式
cvGetCaptureProperty(image, CV_CAP_PROP_FOURCC)其中image是CvCapture结构的对象。此函数返回double。我确实将它转换为char*,这样我就可以打印出格式,但它不起作用。有什么建议吗?
发布于 2014-03-14 08:58:58
获取double*并将其转换为:
double f = cvGetCaptureProperty(image, CV_CAP_PROP_FOURCC);
char* fourcc = (char*) (&f); // reinterpret_cast但是,对于C++接口,this OpenCV highgui tutorial建议执行以下操作:
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};当然,您可以使用cvGetCaptureProperty而不是get方法。
发布于 2015-08-19 14:35:21
您可以使用以下函数:
// 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=DIVXhttps://stackoverflow.com/questions/22393875
复制相似问题