社区
图形处理/算法
帖子详情
vfw问题
lijianxian
2003-09-15 10:04:18
请问如何将摄像头的图像截取下来,多谢了
...全文
85
12
打赏
收藏
vfw问题
请问如何将摄像头的图像截取下来,多谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lijianxian
2003-09-16
打赏
举报
回复
已经是RGB24了
mct1025
2003-09-16
打赏
举报
回复
摄像头图像格式改为RGB24,试试
lijianxian
2003-09-16
打赏
举报
回复
我在回调函数中写的东西如下:
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=sizeof(BITMAPFILEHEADER) + lpVHdr->dwBufferLength;
bfh.bfOffBits=sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO);
fp=fopen("./out.bmp","wa");
fwrite(&bfh,1,sizeof(BITMAPFILEHEADER),fp);
fwrite(lpVHdr->lpData,1,lpVHdr->dwBufferLength,fp);
fclose(fp);
执行后得到文件了,但是不能读,文件大小大约五六十k.你能否给指正一下
mct1025
2003-09-16
打赏
举报
回复
用FILE *stream;
fopen,fwrite,fclose
lijianxian
2003-09-16
打赏
举报
回复
还是不行,我的程序是win 32 API的,连添加CFile类都困难呀
mct1025
2003-09-16
打赏
举报
回复
lpVHdr->lpData指向一个DIB数据,含有BITMAPINFO
lpVHdr->dwBufferLength是DIB数据长度
VIDEOHDR这个结构体,不需要再申明了
保存成bmp文件时,还需要加一个BITMAPFILEHEADER
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=sizeof(BITMAPFILEHEADER) + lpVHdr->dwBufferLength;
bfh.bfOffBits=sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO);
CFile bf;
if(bf.Open(sBmpFileName,CFile::modeCreate|CFile::modeWrite))
{
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(lpVHdr->lpData,lpVHdr->dwBufferLength);
bf.Close();
}
我现在没有摄像头,你自己试试吧
lijianxian
2003-09-16
打赏
举报
回复
mct1025你好
我按照你的方法试了一下,还是读不出图像
我请问一下是如何处理VIDEOHDR这个结构体
也就是说要不要申明它一下,在那个函数里
用一下等等,请指教
lijianxian
2003-09-16
打赏
举报
回复
成功了!非常感谢你的帮助,我是刚刚出来工作的学生,
现在在做摄像头方面的工作,缺乏实际经验。能跟你认识
一下吗,我知道你在这方面肯定很有经验,我的QQ号是
252842707,很高心你能成为我的朋友。谢谢
mct1025
2003-09-16
打赏
举报
回复
忘记加入BITMAPINFO了,抱歉
BITMAPFILEHEADER bfh;
bfh.bfReserved1=bfh.bfReserved2=0;
bfh.bfType=((WORD)('M'<< 8)|'B');
bfh.bfSize=sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO) + lpVHdr->dwBufferLength;
bfh.bfOffBits=sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFO);
BITMAPINFO bmInfo;
capGetVideoFormat(hWndCap,&bmInfo,capGetVideoFormatSize(hWndCap));
FILE *fp;//还有一点问题,图像扭曲,fwrite我不太熟悉,你再试一下吧
fp=fopen("./out.bmp","wa");
fwrite(&bfh,1,sizeof(BITMAPFILEHEADER),fp);
fwrite(&bmInfo,1,sizeof(BITMAPINFO),fp);
fwrite(lpVHdr->lpData,1,lpVHdr->dwBufferLength,fp);
fclose(fp);
CFile bf;//用CFile没有问题
if(bf.Open("./out.bmp",CFile::modeCreate|CFile::modeWrite))
{
bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
bf.WriteHuge(&bmInfo,sizeof(BITMAPINFO));
bf.WriteHuge(lpVHdr->lpData,lpVHdr->dwBufferLength);
bf.Close();
}
mct1025
2003-09-15
打赏
举报
回复
//登记回调函数
capSetCallbackOnFrame(ghWndCap, (FARPROC)FrameCallbackProc);
capGrabFrame(ghWndCap); //捕获单帧图像
LRESULT CALLBACK FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr)
{
if (!ghWndCap)
return FALSE;
//假设fp为一打开的文件指针
fwrite(fp,lpVHdr->lpData,lpVHdr->dwBufferLength,1);
return (LRESULT) TRUE ;
}
WM_CLOSE//取消所登记的回调函数
capSetCallbackOnFrame(ghWndCap, NULL);
flinming
2003-09-15
打赏
举报
回复
读取图象数据,写成bmp文件
lijianxian
2003-09-15
打赏
举报
回复
我想问的是用哪一个API函数可以将某一视频窗口的图像抓下来,并保存到
某个.jpg或.bmp文件中。请各位高手指点。
Vfw
.h-
vfw
32.lib.rar_
VFW
32.lib_
Vfw
.h-
vfw
32.lib_
vfw
avi_
vfw
.h_x264
Video for Windows (
VFW
),AVI视频库
vfw
32.lib及头文件
Vfw
.h
x264
vfw
.zip
x264
vfw
VFW
_CAP.rar_
VFW
c builder_
VFW
interface _
Vfw
cap
使用C++Builder6.0开发,使用
VFW
接口显示视频设别的枚举、连接、设置和预览
VFW
.pas_Delphi版
VFW
SDK
微软的
VFW
SDK只有VC和VB版,并没有Delphi版
vfw
.pas 就是
vfw
.h的pas声明我找了很久了,公布出来。
vfw
基本操作函数
vfw
视频采集
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章