【笔记】opencv4.0+C++读取(.raw)16位图像

opencv4.0+C++读取(.raw)16位图像

编辑环境        vc2019+opencv4.0

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
    FILE* fp;
	fp = fopen("***.raw", "rb");//打开文件
    //创建一个大小与文件大小、类型相同的Mat src,h为src.rows,w为src.cols
	Mat src;
	src.create(Size(h, w), CV_16UC1);
	fread(src.data, sizeof(unsigned short), h * w, fp);//将文件读入src
    normalize(src, src, 0, 255, NORM_MINMAX);//将src中0~65535缩放到0~255
	src.convertTo(src, CV_8UC1);//将src改为8位,用来显示
	imshow("原图", src);
    waitKey(0);
	return 0;
}

fopen()调用时报错,在项目属性->C/C++->预处理器->预处理器定义->编辑添加下面俩个宏:

_CRT_NONSTDC_NO_DEPRECATE
_CRT_SECURE_NO_WARNINGS

如下图:

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 在Qt和OpenCV中,可以使用dgal库来读取和处理.tif格式的图像文件。首先,需要在代码中使用dgal库来加载.tif文件。然后,利用OpenCV的Mat类来存储和处理图像数据,并使用Qt中的QImage类将Mat对象转换为QPixmap对象,在图形界面中显示.tif图像。具体代码和步骤如下所示: 1.加载图像文件:使用dgal库来加载图像文件。 ```C++ #include <dgal/dgal.h> dgal::Image<uint16_t> img; img.read("filename.tif"); ``` 2.将图像数据转换为Mat对象:使用OpenCV的Mat类来存储和处理图像数据。 ```C++ cv::Mat rawData(img.height(), img.width(), CV_16U, img.data()); ``` 3.将Mat对象转换为QPixmap对象:使用Qt中的QImage类将Mat对象转换为QPixmap对象。 ```C++ QImage image(rawData.data, img.width(), img.height(), QImage::Format_Grayscale16); QPixmap pixmap = QPixmap::fromImage(image); ``` 4.在图形界面中显示.tif图像:使用Qt中的QLabel控件来显示QPixmap对象。 ```C++ QLabel *label = new QLabel(); label->setPixmap(pixmap); label->show(); ``` 通过上述步骤,我们就可以在Qt和OpenCV中显示.tif格式的图像文件了。 ### 回答2: qt, dgal和opencv都是涉及图像处理和显示的开源库。其中,QT是一个跨平台的开源图形界面应用程序开发框架,主要用于快速开发GUI程序;dgal是一种开源的空间数据分析库,用于空间数据分析和处理;opencv则是一个开源的计算机视觉库,主要用于图像和视频处理。 .tif是一种图像文件格式,它通常用于存储高质量的图片,包括照片、图像和艺术品等。 要在Qt, dgal和opencv中显示.tif格式的图像,首先需要将图像加载到相应的库中。这可以通过Qt的QImage类、dgal的GDAL库和opencv的cv::imread函数实现。加载图像后,可以使用相应库中提供的函数和工具对图像进行处理和显示。 在Qt中,可以使用QPixmap或QImage进行图像显示。对于dgal,可以使用GDAL库提供的函数进行图像处理和显示。opencv则提供了cv::imshow函数来显示图像。 总之,Qt,dgal和opencv都提供了丰富的功能和工具,可以方便地处理和显示.tif格式的图像。无论是用于开发GUI程序还是进行空间数据分析和计算机视觉处理,这些库都是非常有用的工具。 ### 回答3: Qt是一个跨平台的GUI开发框架,可以与DGAL和OpenCV结合使用来显示.tif文件。其中,DGAL是一个面向计算几何和数字几何算法的C++库,OpenCV则是一个开源计算机视觉库。 首先,可以使用DGAL库中的CGAL::ImageIO类来读取.tif文件,并将其转换为DGAL中的Image对象。接着,通过使用OpenCV库中的cv::Mat类将DGAL中的Image对象转换为OpenCV中的Mat对象。最后,可以使用Qt中的QLabel或者QGraphicsView来显示存储.tif文件的OpenCV中的Mat对象。 例如,可以通过以下代码实现: #include <CGAL/ImageIO.h> #include <opencv2/core/mat.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgui.hpp> #include <QImage> #include <QLabel> int main(int argc, char *argv[]) { CGAL::Image_3 image; QImage qimage; cv::Mat mat; // 读取.tif文件到DGAL的Image对象中 CGAL::ImageIO::read_TIFF_image(argv[1], image); // 将DGAL的Image对象转换为OpenCV的Mat对象 mat = cv::Mat(image.height(), image.width(), CV_8UC4, image.pixel_ptr()); // 将OpenCV的Mat对象转换为QImage对象 qimage = QImage(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_ARGB32); // 通过Qt中的QLabel显示QImage对象 QLabel label; label.setPixmap(QPixmap::fromImage(qimage)); label.show(); return 0; }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

客官可满意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值