c++利用opencv显示raw遥感图像,摸索了一天了,记录一下吧,总之就是利用fopen打开,然后memcpy拷贝内存,一定要注意原始图像的分辨率,还有数据的类型!
/***********************************************************
打开raw图像,并在opencv中显示。需要知道原始图像的分辨率 (8221*7441);
和数据类型为 float,利用fopen和memcpy内存拷贝赋值到opencv中并显示!!!
@zhou 2020/1/8
************************************************************/
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
int height = 7441;//原始图像的高
int width = 8221;//原始图像的宽
/*int height = 7441;
int width = 8221;*/
FILE *fp = NULL; //定义指针
fp = fopen("1.raw", "rb+");
float *data = (float *)malloc(width*height * sizeof(float)); //内存分配,new,malloc都行
fread(data, sizeof(float), width*height, fp); //在缓存中读取数据
cv::Mat img;
int bufLen = width*height; //定义长度
img.create(height, width, CV_32FC1);//创建Mat
memcpy(img.data, data, bufLen * sizeof(float)); //内存拷贝
/*
//遍历图像的每个像素点
for (int row = 0; row < img.rows; row

本文介绍如何使用C++与OpenCV显示RAW格式的遥感图像,包括文件读取、内存拷贝及图像显示过程。同时,提供Python版本实现,利用numpy和cv2库简化操作。
8808

被折叠的 条评论
为什么被折叠?



