c语言读取bmp图像_opencv 图像处理

c语言读取bmp图像_opencv 图像处理以前都是使C语言中File*、fopen、fread等操作文件,这几天学习了C++IO标准库,就应用来读取bmp图像。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

以前都是使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图像

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191934.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • navicat创建唯一索引_如果表创建了唯一索引后

    navicat创建唯一索引_如果表创建了唯一索引后

  • hadoop核心模块_ERP核心模块

    hadoop核心模块_ERP核心模块转载地址:https://www.amobbs.com/thread-5531817-1-1.html 最近,利用uip搞了小东西,要想利用好uip,最好彻底搞清楚其关键函数uip_process.当网卡接收到数据之后,均需要通过该函数来处理.  下面是对uip1.0中的uip_process函数解读.//要点:网卡收到数据时,uip_process会遍历uip_udp_conn…

  • pycharm将python程序打包_python 程序打包

    pycharm将python程序打包_python 程序打包关于使用Pycharm对python文件进行打包首先建立python项目的时候要按照标准来建设我使用的python配置的解释器,没有使用python的虚拟环境,因为虚拟环境建设出来的项目不是我想要的项目结构,包结构比较多,看着不是很舒服4.配置完成后点击创建创建完成后可以自己创建合适包结构创建完合适的包结构后,就可以编写python代码了,但要python代码运行开,需要配置运行环境9.环境配置调试好就可以运行调试python代码..

  • softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]

    softmax、softmax损失函数、cross-entropy损失函数[通俗易懂]softmaxsoftmax,顾名思义,就是soft版本的max。在了解softmax之前,先看看什么是hardmax。hardmax就是直接选出一个最大值,例如[1,2,3]的hardmax就是3,而且只选出最大值,非黑即白,但是实际中这种方式往往是不合理的,例如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章属于各种主题的概率值,而不是简单直接地归类为某一种唯一的主题。这里就需要用到soft的概念,即不再唯一地确定某一个最大值,而是为每个输出分类

  • 打印机显示正在未连接服务器,打印机状态未联机是怎么回事

    打印机显示正在未连接服务器,打印机状态未联机是怎么回事大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。打印机状态未联机的原因如下:1、可能是打印机的电源线或者是相应的数据传输线没有接好。这种状况要确保电源接通,相应的数据传输线接好,就不会出现打印机未联机的状况了。2、可能打印机处于暂停打印状态,打印机这个时候不会接受命令,自然也不会联机工作。这种状况只要将暂停打印的设置取消,打印机就能正常工作了。3、可能当前的打印机不是默认进行打…

  • webstrom2021激活码【2021最新】

    (webstrom2021激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~ML…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号