所以我试图访问存储在计算机内存中的jpg图像数据,但我只能访问数据的起始地址和大小数据。指向数据开头的指针为uint8_t *
,数据大小为uint32_t
。
使用fwrite
,我可以将数据写入jpg文件并正确显示,因此我知道数据是正确且存在的。如何将jpg图像数据直接存储在变量中?最终,我也希望将它存储在opencv Mat中。
我不确定要显示的代码,所以如果您想查看其中的特定部分,请询问。
答案 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的标题,然后将原始内存强制转换为结构,以便更好地操作它。