RAW图转换为bmp图,看不太懂转换过程....
1条回答 默认 最新
- 樱花の雨 2021-07-28 10:54关注
/*********************************************************** 打开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++) { for (int col = 0; col < img.cols; col++) { int d = img.at<float>(row, col); printf("%d,%d,的值为:%d\n", row, col, d); } } */ //图像(3678,535)处的像素值 int pixel = img.at<float>(3678, 635); printf("%d,%d,的像素值为:%d\n", 3678, 635, pixel); //normalize(img,img, 1.0,255.0, NORM_INF); double minv = 0.0, maxv = 0.0; double* minp = &minv; double* maxp = &maxv; minMaxIdx(img, minp, maxp);//找到最大和最小的像素值 cout << "最大的像素值为:" << *minp << endl; cout << "最大的像素值为:" << *maxp << endl; //img.convertTo(img, CV_8UC1, 255, 0); //归一化为0,255 namedWindow("img", 0);//窗口可以缩放 imshow("img", img); //显示 //imwrite("out.jpg", img); //保存为jpg waitKey(0); return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?