C++ fstream读取bmp图像
来源:互联网 发布:淘宝怎么买蜂蜜 编辑:程序博客网 时间:2024/05/03 15:52
以前都是使C语言中File* 、fopen、fread等操作文件,这几天学习了C++ IO标准库,就应用来读取bmp图像。
#include "stdafx.h"#include <fstream># include <windows.h>#include <opencv2/opencv.hpp>using namespace std;using namespace cv;int _tmain(int argc, _TCHAR* argv[]){BITMAPFILEHEADER fh;BITMAPINFOHEADER ih;int rows, cols;Mat showImg;ifstream src("2.bmp", ifstream::binary); //2.bmp为灰度图像if (!src){cerr << "打开失败";return -1;}src.read((char *)&fh, sizeof(BITMAPFILEHEADER));if (fh.bfType != 'MB'){cerr << "这不是BMP图像";return -1;}src.read((char *)&ih, sizeof(BITMAPINFOHEADER));rows = ih.biHeight;cols = ih.biWidth;//bmp图像数据存储是4字节对齐的int colsDQ = (cols + 3) / 4 * 4;//移动到图像数据处src.seekg(sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD) * 256, ios::beg);//参数:相对位置,起点showImg = Mat::zeros(rows, cols, CV_8U);//读取图像数据uchar *pData = new uchar[rows*colsDQ];src.read((char *)pData, rows*colsDQ);//bmp图像数据转换到Mat图像数据(Mat图像数据非对齐)for (int i = rows - 1; i >= 0; --i) //bmp图像存储为行倒序for (int j = 0; j < cols; ++j){showImg.ptr<uchar>(rows - 1 - i)[j] = *(pData + i*colsDQ + j);}delete[]pData;imshow("hi", showImg);waitKey();return 0;}
参考:
1、点击打开链接
2、点击打开链接 写bmp图像
0 0
- C++ fstream读取bmp图像
- C语言读取BMP图像数据(转)
- 使用C函数读取BMP格式图像
- 纯c语言读取BMP图像
- C语言读取BMP图像到数组,BMP图片格式
- C++读取BMP图像
- bmp图像读取
- bmp格式图像的读取
- vtk中的BMP图像读取
- BMP图像生成 纯C
- C语言处理BMP图像
- C语言读写BMP图像
- c语言读取bmp文件
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- 【数字图像处理】<纯C++>读取、裁剪、缩放、旋转和存储8位bmp灰度图像
- 利用C的BMP图像的读取、保存及旋转的实现
- bmp图像读取显示保存问题
- 图像识别 - C++读取bmp位图入门
- 九九乘法表
- Maven的仓库搜索服务
- 新版sonar代码审查问题总结
- Hadoop 2.7.3安装与配置------Hadoop学习(1)
- 在Struts2中存在的并发问题(个人记录)。
- C++ fstream读取bmp图像
- 双窗OTSU 二值化
- Nginx的一些基本功能
- #364 – 日历控件日期多选(Allowing a User to Select Multiple Dates in a Calendar Control)
- 初学Android OpenGL的一些心得
- 软件测试分类
- 图形学学习笔记1——基本概念
- Android7.0适配教程,心得
- Android源码中的外观模式