c#中为什么调用摄像头后是一片漆黑?

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Drawing.Design;namespacehealth{publicclassVideoAPI//视频API类{//视频API调用[DllImport("avicap32.dll")]publicstaticexternIntPtrcapCreateCaptureWindowA(byte[]lpszWindowName,intdwStyle,intx,inty,intnWidth,intnHeight,IntPtrhWndParent,intnID);[DllImport("avicap32.dll")]publicstaticexternboolcapGetDriverDescriptionA(shortwDriver,byte[]lpszName,intcbName,byte[]lpszVer,intcbVer);[DllImport("User32.dll")]publicstaticexternboolSendMessage(IntPtrhWnd,intwMsg,boolwParam,intlParam);[DllImport("User32.dll")]publicstaticexternboolSendMessage(IntPtrhWnd,intwMsg,shortwParam,intlParam);//常量publicconstintWM_USER=0x400;publicconstintWS_CHILD=0x40000000;publicconstintWS_VISIBLE=0x10000000;publicconstintSWP_NOMOVE=0x2;publicconstintSWP_NOZORDER=0x4;publicconstintWM_CAP_DRIVER_CONNECT=WM_USER+10;publicconstintWM_CAP_DRIVER_DISCONNECT=WM_USER+11;publicconstintWM_CAP_SET_CALLBACK_FRAME=WM_USER+5;publicconstintWM_CAP_SET_PREVIEW=WM_USER+50;publicconstintWM_CAP_SET_PREVIEWRATE=WM_USER+52;publicconstintWM_CAP_SET_VIDEOFORMAT=WM_USER+45;publicconstintWM_CAP_START=WM_USER;publicconstintWM_CAP_SAVEDIB=WM_CAP_START+25;}publicclasscVideo//视频类{privateIntPtrlwndC;//保存无符号句柄privateIntPtrmControlPtr;//保存管理指示器privateintmWidth;privateintmHeight;publiccVideo(IntPtrhandle,intwidth,intheight){mControlPtr=handle;//显示视频控件的句柄mWidth=width;//视频宽度mHeight=height;//视频高度}///<summary>///打开视频设备///</summary>publicvoidStartWebCam(){byte[]lpszName=newbyte[100];byte[]lpszVer=newbyte[100];boolres=VideoAPI.capGetDriverDescriptionA(0,lpszName,100,lpszVer,100);this.lwndC=VideoAPI.capCreateCaptureWindowA(lpszName,VideoAPI.WS_CHILD|VideoAPI.WS_VISIBLE,0,0,mWidth,mHeight,mControlPtr,0);if(VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_DRIVER_CONNECT,0,0)){VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SET_PREVIEWRATE,100,0);VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SET_PREVIEW,true,0);}}///<summary>///关闭视频设备///</summary>publicvoidCloseWebcam(){VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_DRIVER_DISCONNECT,0,0);}///<summary>///拍照///</summary>///<paramname="path">要保存bmp文件的路径</param>publicvoidGrabImage(IntPtrhWndC,stringpath){IntPtrhBmp=Marshal.StringToHGlobalAnsi(path);VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SAVEDIB,0,hBmp.ToInt32());}}}这是调用摄像头代码,但调试时,摄像头一片漆黑

解决方案

解决方案二:
设备管理器中启用摄像头?
解决方案三:

解决方案四:
多次启用直至有图像不过只能暂时解决
解决方案五:
引用3楼qq_34896667的回复:

多次启用直至有图像不过只能暂时解决

我这个调用一次就灰色,无法再调用了
解决方案六:
换第三方组件aforget.net不知道是不是叫这个名字..我有代码可以call我

时间: 2024-10-27 02:56:48

c#中为什么调用摄像头后是一片漆黑?的相关文章

javascript中以下代码中为什么调用 vali()后只弹出“调用functio”而alert(a),alert(b),alert(c)都不会弹出信息

问题描述 <script type="text/javascript">var a;var b;var c;function vali(){alert("调用function");alert(document.getElementById(className));a = document.getElementById("className");alert(className);b = document.getElementById(&

C#调用摄像头后为什么没反应

问题描述 想用C#做一个窗体程序,可以打开笔记本的摄像头并显示到picturebox中,但是从网上找到的程序无法正常运行,打开后picturebox直接黑了,笔记本摄像头的指示灯也没有亮,应该怎么解决啊,楼下附代码 解决方案 解决方案二:publicclassVideoAPI{[DllImport("avicap32.dll")]publicstaticexternIntPtrcapCreateCaptureWindowA(byte[]lpszWindowName,intdwStyle

Windows phone 8.1开发中解决调用真实摄像头会死机的问题

无论你是用Silverlight还是用RT的API来开发,在使用MediaCapture拍照片或录视频时,要是在模拟器上运行会万事大吉:但是,一旦放到真实手机上运行,肯定有人发现了,细心的朋友肯定发现了--不知道为什么,会经常导致手机重启,或者死机. 啊,顺便给大家说说,死机不可怕,也不用重置,也不用刷机,不会丢失资料的,你只要同时按下"音量减"+"电源"两个键,要同时按住,不要放开,大约等10多秒后,会关机,然后你再放开这两个键,这样手机就软启了,不会丢失数据.

vb.net-VB.NET调用摄像头拍照只能拍一次,再拍就会出现捕获源,选择视频设备,点确定后没有用

问题描述 VB.NET调用摄像头拍照只能拍一次,再拍就会出现捕获源,选择视频设备,点确定后没有用 VB.NET调用摄像头拍照只能拍一次,再拍就会出现捕获源,选择视频设备,点确定后没有用,依然是黑屏,但是将笔记本重启后再打开就可以拍一次,然后又不行,还要重启后才能拍. 这个代码只能在2008里打开,如果谁能给编一个2010的调用摄像头拍照的更好,不要糊弄,csdn里的我们都下载尝试了,没一个好的,谢谢,以下是代码,感觉需要在stop那里做文章,求大神帮忙,重赏. Public Class Form

javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案

asp.net|javascript|js|过程|解决 javascript如何调用C#后代码中的过程 和ASP.NET调用JS乱码解决方案  +++++++++++++++++第一种情况: 1.后台方法: protected string CsharpVoid(string strCC){  return strCC; } 2.javascript 调用<script  language="javascript">   var s = "<%=Csharp

class-C#中使用Task类,如何调用完成后继续执行下一个Task?是threadpool么?

问题描述 C#中使用Task类,如何调用完成后继续执行下一个Task?是threadpool么? C#中使用Task类,如何调用完成后继续执行下一个Task?是threadpool么? 解决方案 http://www.cnblogs.com/x-xk/archive/2012/12/11/2804563.html

python-在ubuntu虚拟环境中安装完flask后无法调用?

问题描述 在ubuntu虚拟环境中安装完flask后无法调用? 安装已经成功,但是调用时 解决方案 先看虚拟环境中的python安装好flask没

canvas-求助大神~网页中调用摄像头左右方向反了额,用拍照软件试了,摄像头本身没问题,下面是代码

问题描述 求助大神~网页中调用摄像头左右方向反了额,用拍照软件试了,摄像头本身没问题,下面是代码 <!DOCTYPE HTML > <html> <head> <title>cam.html</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body>

求解在SSH中,打开页面时引用action,并读取在调用action后session中数据

问题描述 求解在SSH中,打开页面时引用action,并读取在调用action后session中数据 解决方案 解决方案二:Mapmap=(Map)ActionContext.getContext().get(ActionContext.SESSION);Objectobj=map.get("sessionKey");解决方案三:引用楼主a76607401的回复: 求解在SSH中,打开页面时引用action,并读取在调用action后session中数据 我就是想知道咋个在页面中引用s