根据起始地址和大小

时间:2015-05-07 23:25:57

标签: c++ pointers memory

所以我试图访问存储在计算机内存中的jpg图像数据,但我只能访问数据的起始地址和大小数据。指向数据开头的指针为uint8_t *,数据大小为uint32_t

使用fwrite,我可以将数据写入jpg文件并正确显示,因此我知道数据是正确且存在的。如何将jpg图像数据直接存储在变量中?最终,我也希望将它存储在opencv Mat中。

我不确定要显示的代码,所以如果您想查看其中的特定部分,请询问。

3 个答案:

答案 0 :(得分:2)

你知道图像的分辨率吗?如果是的话

将它存储在opencv Mat中你可以做

cv::Mat buf = cv::Mat(height, width, CV_8U, buff_ptr);
cv::Mat img = cv::imdecode(buf, CV_LOAD_IMAGE_COLOR);

答案 1 :(得分:1)

如果你有一个uint8_t *类型的变量包含指向它的指针,你可以像数组一样访问它。

uint8_t* my_pointer;
int my_len;

for (int i = 0; i < my_len; ++i)
    cout << "The value of byte " << i
        << " of the data is " << my_pointer[i] << endl;

答案 2 :(得分:1)

这个怎么样:

uint8_t *JPEG;
JPEG = malloc(sizeof(uint8_t) * size_var);
if(JPEG) {
  memcpy(JPEG, your_pointer, size_var);
}

但是,您已经拥有变量中的数据,因为您已经有了指向它的指针。 :)

如果你想真正想要的话,可以构建一个struct,正确格式化JPEG的标题,然后将原始内存强制转换为结构,以便更好地操作它。