[英]How to read 1-bit bmp from uchar buffer to cv::Mat
Here is a code, for reading bmp files and convert it to ImplImage class. 这是一个代码,用于读取bmp文件并将其转换为ImplImage类。 And I know that there is simple way (ImplImage("filepath")).
而且我知道有一种简单的方法(ImplImage(“ filepath”))。
CFile File;
char *ReadBuffer; // Pointer to read buffer
char *OutputBuffer; // Pointer to output buffer
BITMAPFILEHEADER BmpFileHeader;
unsigned int BmpHeadSize;
char *BmpHeadPtr;
File.Open(FileName);
SrcFile.Read(&BmpFileHeader, sizeof(BmpFileHeader);
BmpHeadSize = BmpFileHeader.bfOffBits - sizeof(BmpFileHeader);
BmpHeadPtr = new char[BmpHeadSize];
File.Read(BmpHeadPtr, BmpHeadSize);
BmpInfoPtr = (BITMAPINFOHEADER*)BmpHeadPtr;
ReadBuffer = new char[BmpInfoPtr->biSizeImage];
SrcFile.Read(ReadBuffer, BmpInfoPtr->biSizeImage);
OutputBuffer = new char[BmpInfoPtr->biSizeImage];
for (i = 0; i < IMAGE_HEIGHT; i++)
{
//Use this line if the bitmap is 24 bit
memcpy(&OutputBuffer[(IMAGE_HEIGHT - i - 1) * IMAGE_WIDTH * 3],
&ReadBuffer[i * IMAGE_WIDTH * 3], IMAGE_WIDTH * 3);
}
memcpy(m_Ipl->imageData, OutputBuffer, BmpInfoPtr->biSizeImage);
How could I read 1-bit bmp image? 如何读取1位bmp图像? It works fine with 24-bit and 8-bit.
它适用于24位和8位。 Help please:)
请帮助:)
Open the bitmap file with LR_CREATEDIBSECTION
flag 使用
LR_CREATEDIBSECTION
标志打开位图文件
HBITMAP hbmp = (HBITMAP)LoadImageW(0, L"test.bmp", IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION);
BITMAP bm;
GetObject(hbmp, sizeof(bm), &bm);
bm.bmBits
will give access to bits. bm.bmBits
将提供对位的访问。 The size of bits is bm.bmWidthBytes
x bm.bmHeight
位的大小是
bm.bmWidthBytes
x bm.bmHeight
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.