c++ 将cv::mat BGR 转std::vector<unsigned char> Packed:UYVY422
时间: 2024-09-24 15:11:34 浏览: 42
bgr.zip_OPENCV BGR_opencv rgb bgr_rgb value opencv_site:www.pudn
在C++中,将`cv::Mat`类型的BGR图像数据转换成`std::vector<unsigned char>`的-packed UYVY422格式,首先需要明确一下,BGR到UYVY422的转换通常是为了适应某些视频编码格式的要求。以下是一个简单的步骤:
1. **包含头文件**:
```cpp
#include <opencv2/opencv.hpp>
```
2. **读取BGR Mat**:
```cpp
cv::Mat bgrImage; // 假设已经加载了BGR图像
```
3. **创建目标Packed UYVY422矢量**:
```cpp
std::vector<unsigned char> packedData(bgrImage.total() * 3 / 2, 0); // 总像素数的一半是因为每个U/V块有1.5倍的字节数
```
4. **进行转换**:
OpenCV提供了一个函数`cvtColor()`来进行颜色空间转换。这里使用的是`COLOR_BGR2UYVY`常量:
```cpp
cv::cvtColor(bgrImage, packedData, cv::COLOR_BGR2UYVY);
```
这行代码会把BGR图像的数据写入到`packedData`的前三个字节对应的位置,形成UYVY422格式。
5. **检查转换结果**:
阅读全文