c++ - 如何将提取的栅格信息转换为opencv库可处理的格式

标签 c++ opencv image-processing filter gdal

假设我有一个

vector<unsigned char>a  

这是GDAL库(地理信息系统的开源库)的RasterIO函数提取的geotiff图像的栅格信息
我的图片是 7697x7309,所以 vector 有 56257373 个成员。
我如何在此 vector 上应用 5x5 高斯滤波器,然后将结果作为另一个 56257373 类型的 unsigned char 成员 vector ,以便能够使用 GDAL 库将该 vector 保存为另一个 geotiff 图像。


我的主要问题是上面的,但如果不可能,请告诉我如果我有一个 geotiff 文件,我如何在运行时使用 opencv 对其应用过滤器。我的意思是我不想将格式转换为另一种格式,如硬盘上的位图和 tiff,然后从硬盘读取数据以在其上应用进程,假设我在内存的一部分中有 GDAL 格式的数据并且想要在另一部分将其转换为 opencv 兼容数据并对其应用过滤器?

最佳答案

我认为这就是您的要求:

// 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;

关于c++ - 如何将提取的栅格信息转换为opencv库可处理的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18554989/

相关文章:

c# - 使用 GDI+ 混合透明图像时的伪像

python - 使用python平滑图像轮廓

c++ - 视频节目中更好的边缘滤波算法

c++ - 将 vector<vector<int>> 元素的值存储在单独的容器中

c++ - 扩展精度浮点库 C/C++

c++ - Windows Mobile 上的 CInternetSession::OpenURL 导致错误 12029(无法连接)

c++ - OpenCV calcHist 函数。

c++ - 如何以编程方式从 Firefox 获取证书?

未检测到 OpenCV 2.2 Ubuntu11.04 网络摄像头

opencv - 使用 openCV 进行 OCR 检测