necesito leer una imagen con OpenCV, obtener su tamaño y enviarlo a un servidor por lo que procesa la imagen y darle de nuevo a mí el extraída caracteristicas.tienda un cv :: Mat en una matriz de bytes para la transferencia de datos a un servidor
He estado pensando en usar un vector<byte>
, pero no entiendo cómo copiar los datos a un cv :: Mat. Quiero que sea rápido, así que estoy tratando de acceder a los datos con un puntero, pero tengo una excepción de tiempo de ejecución. Tengo algo como esto.
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));
}
}
- ¿Cuál es el mejor enfoque para esta tarea?
Claro, me gusta esta manera mejor –
¿Por qué necesita el para hacer el establecimiento de memoria? ¿Por qué no simplemente copiar toda la memoria? –
Porque en el caso general Mat :: step es diferente de Mat :: cols. Esto le permite, por ejemplo, recortar la matriz sin reorganizar realmente los bytes. Puede hacer una submatriz que haga referencia a una ventana a otra matriz, sin copiar datos. Y cuando cambias una celda en la submatriz, realmente cambias una celda en la matriz original, a la que la submatriz solo hace referencia. – Dialecticus