gpt4 book ai didi

c++ - 在 openCV c++ 中获取帧的 Y 和 Cb 、 Cr 值

转载 作者:太空宇宙 更新时间:2023-11-03 22:33:46 24 4
gpt4 key购买 nike

我正在编写一个使用 openCV 的代码,这是我的问题,openCV 中的帧是 RGB 颜色空间,但我需要它是 YCbCr 格式,所以我用我写了这个小代码:

 void  PixelError::conversiontoYcbcr(cv::Mat rgbFrame){
cv::cvtColor(rgbFrame,frameycbcr, CV_RGB2YCrCb,0);
cv::Vec3f pixel = frameycbcr.at<cv::Vec3f>(row,col);
}

这是获取 R 和 G 和 B 值的示例,但由于我转换了帧,所以我也想获取我的值,但我在行和列中遇到错误,我不知道 vector 的哪个 channel 像素代表我的 Y 或 Cb 或 CR 值。预先感谢您的帮助

最佳答案

如果您的输入 RGB 图像使用每个 channel 8 位,则 cvtColor 的结果也将是 CV_8UC3 类型。所以你必须像这样用 cv::Vec3b 来获取你的像素:

#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
cv::Mat rgb(4, 3, CV_8UC3, cv::Scalar(255, 127, 63));
cv::Mat ycbcr;
cv::cvtColor(rgb, ycbcr, CV_RGB2YCrCb, 0);
for (int row(0); row < ycbcr.rows; ++row)
{
for (int col(0); col < ycbcr.cols; ++col)
{
cv::Vec3f pixel = ycbcr.at<cv::Vec3b>(row, col);
std::cout << "row: " << row << "; col: " << col << "; Y: " << pixel[0] << "; Cr: " << pixel[1] << "; Cb: " << pixel[2] << std::endl;
}
}
}

关于c++ - 在 openCV c++ 中获取帧的 Y 和 Cb 、 Cr 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13799025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com