首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取OpenCV FOURCC代码int到char转换

读取OpenCV FOURCC代码int到char转换
EN

Stack Overflow用户
提问于 2021-06-14 23:50:54
回答 1查看 94关注 0票数 1

我获得了以下代码来读取视频文件的FOURCC代码:

代码语言:javascript
复制
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
string fourcc_str = fmt::format("%c%c%c%c", fourcc & 255, (fourcc >> 8) & 255, (fourcc >> 16) & 255, (fourcc >> 24) & 255);
std::cout << "CAP_PROP_FOURCC: " << fourcc_str << std::endl;

此代码输出%c%c,它应该输出HDYC。如果我将代码修改为

代码语言:javascript
复制
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
string fourcc_str = fmt::format("{:x}{:x}{:x}{:x}", fourcc & 255, (fourcc >> 8) & 255, (fourcc >> 16) & 255, (fourcc >> 24) & 255);
std::cout << "CAP_PROP_FOURCC: " << fourcc_str << std::endl;

我得到的输出是:

代码语言:javascript
复制
CAP_PROP_FOURCC: 48445943

我尝试将fmt类型更改为:x,但得到了一个异常。

代码语言:javascript
复制
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
string fourcc_str = fmt::format("{:c}{:c}{:c}{:c}", fourcc & 255, (fourcc >> 8) & 255, (fourcc >> 16) & 255, (fourcc >> 24) & 255);
std::cout << "CAP_PROP_FOURCC: " << fourcc_str << std::endl;

这段代码按照我的预期工作,并输出了FOURCC代码'HDYC‘

代码语言:javascript
复制
 fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
 char c1 = fourcc & 255;
 char c2 = (fourcc >> 8) & 255;
 char c3 = (fourcc >> 16) & 255;
 char c4 = (fourcc >> 24) & 255;        
 std::cout << "CAP_PROP_FOURCC: " << c1 << c2 << c3 << c4 << std::endl;

CAP_PROP_FOURCC: HDYC

如何使用带有正确语法的fmt来获得FOUCC HDYC?

EN

回答 1

Stack Overflow用户

发布于 2021-06-15 22:47:10

c说明符适用于int和{fmt} 7+ (godbolt):

代码语言:javascript
复制
#include <fmt/core.h>

int main() {
  int fourcc = ('C' << 24) | ('Y' << 16) | ('D' << 8) | 'H';
  std::string fourcc_str = fmt::format(
    "{:c}{:c}{:c}{:c}", fourcc & 255, (fourcc >> 8) & 255,
    (fourcc >> 16) & 255, (fourcc >> 24) & 255);
  fmt::print(fourcc_str);
}

输出:

代码语言:javascript
复制
HDYC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67973451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档