在研究dlp投影仪时,由于想要投影1位深的位图图像,在知乎上找到一段代码:

openCV将8bit(1像素对应8bit)图像保存为1bit(1像素对应1bit) - 知乎

在运行到此段代码时,报错:VC Critical error detected c0000374;

std::ofstream fp(dst.c_str(), std::ios::binary | std::ios::out);

在看了几篇文章后,调试了好久,终于发现了问题!

VC Critical error detected c0000374 崩溃问题及解决_恋恋西风的博客-CSDN博客_c0000374

在save1BitImage函数中,有如下代码:

int  line_byte = (width * biBitCount >> 3  + 3) / 4 * 4;
char* p_data = (char*)malloc(line_byte * height);

此处右移操作符优先级小于加号运算符,因此这里相当于右移了6位。本来是为了计算4字节一像素值的行像素字节长度才要右移3位(除以8)。直接导致分配动态内存长度错误!

所以改为

//待存储图像数据每行字节数为4的倍数
int  line_byte = ((width * biBitCount >> 3 ) + 3) / 4 * 4;

调试通过。

C++ 运算符优先级_csdn_1HAO的博客-CSDN博客_c++运算符的优先级顺序

8bit位图保存为1bit相关推荐

  1. linux下将8bit二值位图转化为1bit单色位图【C/C++】

    linux下将8bit二值位图转化为1bit单色位图 bmp位图主要由文件头和信息头两部分,根据windows api下bmp结构体定义,可转化为以下linux可用的结构体(禁用了gcc/g++编译器 ...

  2. opencv图片保存0字节_openCV将8bit(1像素对应8bit)图像保存为1bit(1像素对应1bit)...

    前言 openCV处理的图像最小的位深度都是8,即每个像素的灰度值要用8bit存储,二值化处理的图像也是用8bit来存储每个像素的灰度值(0代表黑色,255代表白色),为什么不能用0和1表示呢,即每个 ...

  3. 在VB6中保存单色(1Bit)位图(VB6代码)

    程序代码: Option Explicit Private Const DIB_RGB_COLORS As Long = 0 Private Const SRCCOPY As Long = & ...

  4. JPEG文件数据结构以及将位图保存为JPG的代码

    一.简述 JPEG是一个压缩标准,又可分为标准JPEG.渐进式JPEG及JPEG2000三种: ①标准JPEG:以24位颜色存储单个光栅图像,是与平台无关的格式,支持最高级别的压缩,不过,这种压缩是有 ...

  5. DIB位图(Bitmap)的读取和保存

    设备无关位图(Device Independent Bitmap)是可以保存在磁盘的位图文件,可以从磁盘读取到内存或者从内存保存到磁盘上.它的文件结构是标准化的,可以在Windows/Linux/Un ...

  6. 【转】DIB位图(Bitmap)的读取和保存

    转自:https://www.cnblogs.com/wangguchangqing/p/5417444.html 设备无关位图(Device Independent Bitmap)是可以保存在磁盘的 ...

  7. 69 RGB图像转单色位图

    1 前言 前段时间搞了一下电子墨水屏显示项目,用的这款墨水屏不能直接显示彩色图.灰度图及二值图,需要将图像转换成单色位图才能显示. 单色位图这还是第一次接触,后面看了资料了解到单色位图和二值图类似.二 ...

  8. 位图Bitmap(基于Java实现)

    所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况.通常是用来判断某个数据存不存在的. 设计原则: 尽可能的最大化利用内存,极限挖掘.利用.发挥Java的性能. ...

  9. bmp位图格式详细介绍-1/4/8/16/24/32bit、存储格式等

    目录 一.概述 二..bmp格式文件详解  2.1 位图文件头  2.2 位图信息头  2.3 调色板  2.4 位图数据 三.位图的其他知识  3.1 压缩的位图 一.概述 bmp是英文Bitmap ...

最新文章

  1. p40 升级鸿蒙,等了这么久,我的P40终于可以升级鸿蒙系统了
  2. 计算机与英语专业结合的案例,文科生可以申请加拿大计算机专业吗?让这个真实案例给你肯定的答案!...
  3. noj Nightmare
  4. Java开发微信的6个步骤
  5. submit与execute区别
  6. 建议设计日常多逛,多学习的网站
  7. 当DIV中的内容超过 div的宽度的时候
  8. 获取当前电脑全部网络连接名字
  9. 大数据Hadoop原理:大数据Hadoop技术原理简介
  10. c语言串口通信实验报告,单片机串口通信实验报告总结
  11. 中国移动“梧桐杯”大数据应用创新大赛强势来袭三大赛道再续辉煌
  12. 卷妹的成长日记之javaweb day2
  13. 安装配置Glusterfs
  14. Linux 系统增加硬盘
  15. 【Hack The Box】linux练习-- Ophiuchi
  16. Json与XML在线互转工具
  17. 生死狙击服务器维护什么意思,生死狙击更新维护公告
  18. js字符串去除空格和中文
  19. 怎么看电脑配置?这些查看电脑配置的方法你知道吗?
  20. VRRP的概述以及VRRP命令和VLAN结合运用

热门文章

  1. Transact-SQL编程
  2. 【人工智能算法从图解入手】
  3. iOS iPhone设备判断大全,包含X系列和11
  4. 微格教学c语言指针教案,小学微课程教案
  5. ae计算机没有该字体,【干货】自己动手,完美解决AE CC 2017/CC 2018/CC 2019字体问题CT generic: not ascii...
  6. 计算机基础知识表格斜线,在WORD中,其中一个表格里画一斜线怎么画?
  7. vue3语法糖父子组件的通信
  8. 第一次写writeup
  9. GEC6818 移植 rtl8723bu wifi驱动
  10. cad2016中选择全图字体怎么操作_cad教程分享CAD如何替换找不到的原文字体?