zoukankan
html css js c++ java
bmp和opencv格式转换
IplImage
*
BmpTOIpl(
int
width,
int
height,unsigned
char
*
pBuffer)
{
IPlImage
*
image
=
cvCreateImage(cvSize(width,height),
8
,
1
);
image
->
imageData
=
pBuffer;
return
image;
}
CDibPtr IplToDib(IplImage
*
image)
{
CDibPtr m_ptrBitmaps;
CSize ImageSize;
ImageSize.cx
=
image
->
width;
ImageSize.cy
=
image
->
height;
m_ptrBitmaps.Create(ImageSize,
8
, CDib::TopDown, CDib::Monochrome);
(unsigned
char
*
) m_ptrBitmaps
->
GetPixels()
=
image
->
ImageData;
return
m_ptrBitmaps;
}
IplImage
*
hBitmap2Ipl(HBITMAP hBmp)
{
BITMAP bmp;
::GetObject(hBmp,
sizeof
(BITMAP),
&
bmp);
int
nChannels
=
bmp.bmBitsPixel
==
1
?
1
: bmp.bmBitsPixel
/
8
;
int
depth
=
bmp.bmBitsPixel
==
1
?
IPL_DEPTH_1U : IPL_DEPTH_8U;
IplImage
*
img
=
cvCreateImageHeader( cvSize(bmp.bmWidth, bmp.bmHeight)
, depth, nChannels );
img
->
imageData
=
(
char
*
)malloc(bmp.bmHeight
*
bmp.bmWidth
*
nChannels
*
sizeof
(
char
));
memcpy(img
->
imageData,(
char
*
)(bmp.bmBits),bmp.bmHeight
*
bmp.bmWidth
*
nChannels);
return
img;
}
void
createDIB(IplImage
*
&
pict)
{
IplImage
*
Red
=
cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT),
IPL_DEPTH_8U,
1
);
IplImage
*
Green
=
cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT),
IPL_DEPTH_8U,
1
);
IplImage
*
Blue
=
cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT),
IPL_DEPTH_8U,
1
);
cvSetImageCOI( pict,
3
);
cvCopy(pict,Red);
cvSetImageCOI( pict,
2
);
cvCopy(pict,Green);
cvSetImageCOI(pict,
1
);
cvCopy(pict,Blue);
//
Initialize the BMP display buffer
bmi
=
(BITMAPINFO
*
)buffer;
bmih
=
&
(bmi
->
bmiHeader);
memset( bmih,
0
,
sizeof
(
*
bmih));
bmih
->
biSize
=
sizeof
(BITMAPINFOHEADER);
bmih
->
biWidth
=
IMAGE_WIDTH;
bmih
->
biHeight
=
IMAGE_HEIGHT;
//
-IMAGE_HEIGHT;
bmih
->
biPlanes
=
1
;
bmih
->
biCompression
=
BI_RGB;
bmih
->
biBitCount
=
24
;
palette
=
bmi
->
bmiColors;
for
(
int
i
=
0
; i
<
256
; i
++
)
{
palette[i].rgbBlue
=
palette[i].rgbGreen
=
palette[i].rgbRed
=
(BYTE)i;
palette[i].rgbReserved
=
0
;
}
cvReleaseImage(
&
Red);
cvReleaseImage(
&
Green);
cvReleaseImage(
&
Blue);
}
查看全文
相关阅读:
C#中的委托,匿名方法和Lambda表达式
模式化窗口问题![window.dialogArguments]
js动态改变HiddenField值,后台不能获取值的问题
将DataTable进行分页并生成新的DataTable
出错提示为:该行已经属于另一个表 的解决方法
如何在服务器端获得showModalDialog传递的参数
Synchronized和SyncRoot与 集合类 的同步
Oracle中数据出现####的问题
如何防止多次提交按钮造成重复提交
Invoke and BeginInvoke
原文地址:https://www.cnblogs.com/wqj1212/p/1006338.html
最新文章
C Primer Plus(十)
Linux常用命令之Shell应用技巧
C Primer Plus(九)
C Primer Plus(十二)
文本编辑器Vim
C Primer Plus(十三)
C Primer Plus(八)
C Primer Plus(七)
C Primer Plus(十一)
grant,synonym sql
热门文章
MagicLibrary文档以及library
7zip 的命令行用法 (转载)
enterprise library
redhat linux忘记密码恢复 [转]
大型系统中使用JMS优化技巧–Sun OpenMQ[转]
自动更新Assembly version
.net opensource framework
[转]mail里显示图片
[转]oracle函数例子
c# winform 实现对postgresql数据库的自动备份还原功能
Copyright © 2011-2022 走看看