Как преобразовать извлеченную растровую информацию в формат, обрабатываемый библиотекой opencv

предположим, что у меня есть

vector<unsigned char>a

которая представляет собой растровую информацию геотифового изображения, извлеченного RasterIO функция библиотеки GDAL (библиотека с открытым исходным кодом для географических информационных систем)
мое изображение размером 7697×7309, поэтому вектор насчитывает 56257373 члена.
Как я могу применить фильтр Гаусса 5×5 к этому вектору, а затем получить результат в виде другого вектора-члена 56257373 типа unsigned char, чтобы иметь возможность сохранить вектор как другое изображение геотифа, используя библиотеку GDAL.


Мой главный вопрос — выше, но если это невозможно, скажите мне, есть ли у меня файл геотайфа, как я могу применить к нему фильтры, используя opencv во время выполнения. Я имею в виду, что я не хочу преобразовывать формат в другой, такой как растровое изображение и tiff на жестком диске, а затем считывать данные из трудно применяемых процессов, предположим, что у меня есть данные в формате GDAL в одной части памяти и я хочу преобразовать его в opencv совместимые данные в другой части и применить к нему фильтры?

1

Решение

Я думаю, это то, что вы просите:

// 1. Convert vector to Mat

cv::Mat amat(7309, 7697, CV_8UC1, &a[0]);

// 2. Apply 5x5 Gaussian filter

cv::Mat bmat;  // blurred output, sigma=1.4 assumed below
cv::GaussianBlur(amat, bmat, cv::Size(5,5), 1.4);

// 3. Convert Mat to vector

cv::Mat cmat = bmat.reshape(1, 1); // make the Mat one big long row
std::vector<unsigned char>b = cmat;
2

Другие решения

Проще чем вектор< > способ конвертации растровых данных GDAL в OpenCV:

//Region of Interest to be read
cv::Rect roi(x, y, w, h);

//Mat allocation to store the data
cv::Mat mat;
mat.create(roi.size(),CV_32F);

//data is stored directly in the mat passing the mat.data pointer to RasterIO
band->RasterIO( GF_Read, roi.x, roi.y, roi.width, roi.height, mat.data,
roi.width, roi.height, GDT_Float32, 0, 0);

Вы просто должны быть уверены, что тип данных OpenCV соответствует типу данных GDAL и что размеры ROI соответствуют размеру растра

0

По вопросам рекламы [email protected]