gpt4 book ai didi

c++ - 将 cv::Mat 存储在字节数组中,以便将数据传输到服务器

转载 作者:可可西里 更新时间:2023-11-01 18:08:18 26 4
gpt4 key购买 nike

我需要使用 OpenCV 读取图像,获取其大小并将其发送到服务器,以便它处理图像并将提取的特征返回给我。

我一直在考虑使用 vector<byte> ,但我不明白如何将数据复制到 cv::Mat。我不希望它变快,所以我尝试使用指针访问数据,但出现运行时异常。我有这样的东西。

Mat image = imread((path + "name.jpg"), 0);
vector<byte> v_char;
for(int i = 0; i < image.rows; i++)
{
for(int j = 0; j < image.cols; j++)
{
v_char.push_back(*(uchar*)(image.data+ i + j));

}
}
  • 哪种方法最适合这项任务?

最佳答案

直接访问是个好主意,因为它对于 OpenCV 来说是最快的,但是您错过了步骤,这可能是您的程序中断的原因。下一行是错误的:

v_char.push_back(*(uchar*)(image.data+ i + j)); 

您不必增加 i,您必须增加 i + image.step。它将是这样的:

Mat image = imread((path + "name.jpg"), 0);
vector<byte> v_char;
for(int i = 0; i < image.rows; i++)
{
for(int j = 0; j < image.cols; j++)
{
v_char.push_back(*(uchar*)(image.data+ i*image.step + j));

}
}

关于c++ - 将 cv::Mat 存储在字节数组中,以便将数据传输到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692224/

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