c语言保存摄像头当前图像,windows api怎么用摄像头拍张照然后保存?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include "StdAfx.h"

#include

#include

#pragma comment(lib,"vfw32.lib")HWND camhwnd; //handle to camera window

LRESULT CALLBACK WindowProc (HWND, UINT, WPARAM, LPARAM); //Window Procedure WindowProc

char szAppName [] = TEXT("WebCam"); //Application name

HDC hdc ; //used in colorstatic to make text background transparent//main Window Procedure WinMain

int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,

LPSTR lpCmdLine, int nCmdShow )

{

HWND hwnd;

MSG msg;

WNDCLASS wc;

wc.style = CS_HREDRAW|CS_VREDRAW;

wc.lpfnWndProc = WindowProc;

wc.cbClsExtra = 0;

wc.cbWndExtra = 0;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(GetModuleHandle(NULL), IDI_APPLICATION);

wc.hCursor = LoadCursor (NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH) (COLOR_WINDOW+1);

wc.lpszMenuName = NULL;

wc.lpszClassName = szAppName; RegisterClass (&wc);

//create the Main Window and call it 'WebCam'

hwnd = CreateWindow (szAppName,szAppName,WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,300,600,0,0,hInstance,0); ShowWindow (hwnd,SW_SHOW);

UpdateWindow (hwnd);while (GetMessage(&msg,0,0,0))

{

if(!IsDialogMessage(hwnd, &msg))

{

TranslateMessage (&msg);

DispatchMessage (&msg);

}

}

return msg.wParam;

}// Procedure WindowProc

LRESULT CALLBACK WindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

{

HINSTANCE hInstance = GetModuleHandle(NULL);

HWND hButtStartCam;

HWND hButtStopCam;

HWND hButtStartVid;

HWND hStopCapture;

HWND hwndLabel;

switch (message) /* handle the messages */

{case WM_CTLCOLORSTATIC:

SetBkMode(hdc,TRANSPARENT);

return (LRESULT)CreateSolidBrush(0xFFFFFF);

case WM_CREATE:

{ hButtStartCam = CreateWindowEx(0,"BUTTON","Start Camera",WS_CHILD | WS_VISIBLE,0,0,100,20,hwnd,(HMENU)1,hInstance, 0); // A Button

hButtStopCam = CreateWindowEx(0,"BUTTON","Stop Camera",WS_CHILD | WS_VISIBLE,0,50,100,20,hwnd,(HMENU)2,hInstance, 0); // A Button

hStopCapture=CreateWindowEx(0,"BUTTON","Stop Capture",WS_CHILD | WS_VISIBLE,0,75,100,20,hwnd,(HMENU)10,hInstance, 0); // A Button

hButtStartVid = CreateWindowEx(0,"BUTTON","Start Capture",WS_CHILD | WS_VISIBLE,0,25,100,20,hwnd,(HMENU)3,hInstance, 0); // A Button

hwndLabel = CreateWindow ( TEXT ("static"),"Press Escape to Stop Capture",WS_CHILD|WS_VISIBLE|ES_LEFT|1,7,460,180,50,hwnd,(HMENU) 46,((LPCREATESTRUCT) lParam) -> hInstance,NULL);

camhwnd = capCreateCaptureWindow ("camera window", WS_CHILD , 0, 100, 300, 300, hwnd, 0); //create capture window SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);// connect to webcam

SendMessage(camhwnd,WM_CAP_DLG_VIDEOSOURCE,0,0);// show webcam options to pick a webcambreak;

}

case WM_COMMAND:

{

switch(LOWORD(wParam))

{

case 1:

{ ShowWindow(camhwnd,SW_SHOW); SendMessage(camhwnd,WM_CAP_DRIVER_CONNECT,0,0);// connect to webcam

SendMessage(camhwnd, WM_CAP_SET_SCALE, true , 0);// set scale

SendMessage(camhwnd, WM_CAP_SET_PREVIEWRATE, 30, 0);// set previewrate

SendMessage(camhwnd, WM_CAP_SET_PREVIEW, true , 0);// turn preview mode onbreak;

}

case 2:

{

ShowWindow(camhwnd,SW_HIDE);// hide webcam window

SendMessage(camhwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0);//disconnect driver turns webcam off

break;

}

case 3:

{

SendMessage(camhwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, (LPARAM)"C:\\camvideo.avi");//setup a capture file called camvideo.avi

SendMessage(camhwnd, WM_CAP_SEQUENCE, 0, 0);// capture the video to camvideo.avi press Esc to stop capture

break;

}

case 10:

{

SendMessage(camhwnd,WM_CAP_SEQUENCE,0,0);

break;

}}

break;

}case WM_DESTROY:

{

SendMessage(camhwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0);//disconnect driver turns webcam off

PostQuitMessage(0); /* send a WM_QUIT to the message queue */

break;

}

default: /* for messages that we don't deal with */

return DefWindowProc(hwnd, message, wParam, lParam);

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值