使用c++98实现:vector<uint8_t> img中,前四字节装int a = 1585,第四到第八字节装int b = 1568,第八字节装一张图像经过cv::imencode()后的
时间: 2024-03-14 08:44:07 浏览: 113
在C++98中,可以使用C风格的类型转换和指针操作来实现这个问题。
```c++
#include <vector>
#include <opencv2/opencv.hpp>
int main() {
std::vector<uint8_t> img;
// 假设已经将数据填充到img中
int a = *(int*)(&img[0]); // 将前四个字节转换为int
int b = *(int*)(&img[4]); // 将第四个到第八个字节转换为int
int img_len = *(int*)(&img[8]); // 将第八个字节后面的四个字节转换为int
std::vector<uint8_t> encoded_img;
encoded_img.reserve(img_len);
encoded_img.insert(encoded_img.end(), img.begin() + 12, img.end()); // 将图像数据从img中复制到encoded_img中
cv::Mat decoded_img = cv::imdecode(cv::Mat(encoded_img, true), CV_LOAD_IMAGE_COLOR);
// ...
return 0;
}
```
这里使用了C风格的类型转换来将指向`img`的指针转换为指向`int`类型的指针。注意,这种类型转换是不安全的,因为它假定了指针指向的内存块的布局和大小。在实际情况中,这种类型转换可能会导致内存访问错误或未定义行为。因此,如果可能的话,最好使用C++类型转换。
阅读全文