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

问题描述

想用C#做一个窗体程序,可以打开笔记本的摄像头并显示到picturebox中,但是从网上找到的程序无法正常运行,打开后picturebox直接黑了,笔记本摄像头的指示灯也没有亮,应该怎么解决啊,楼下附代码

解决方案

解决方案二:
publicclassVideoAPI{[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];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>  ///  <param  name="path">要保存bmp文件的路径</param>  publicvoidGrabImage(IntPtrhWndC,stringpath){IntPtrhBmp=Marshal.StringToHGlobalAnsi(path);VideoAPI.SendMessage(lwndC,VideoAPI.WM_CAP_SAVEDIB,0,hBmp.ToInt32());}}主窗体添加一个button,响应代码cVideovideo=newcVideo(pictureBox1.Handle,pictureBox1.Width,pictureBox1.Height);video.StartWebCam();
解决方案三:
没有人吗?求大神帮助啊
解决方案四:
笔记本驱动和开关没问题吗,qq视频什么的能打开吗
解决方案五:
引用3楼hanxiao1224的回复:

笔记本驱动和开关没问题吗,qq视频什么的能打开吗

没问题,能正常打开
解决方案六:
因为你用的方法不对。你说的这个方法,对免装驱动的摄像头不管用。一般都算使用directshow处理了,你可以找找C#的类库。或者使用下面的例子:http://download.csdn.net/detail/mjp1234airen4385/3607954
解决方案七:
权限问题
解决方案八:
我尝试了一下你的代码,本来也是黑色后来QQ上我开了一下视频设置,测试窗口变成了PicBox变成了绿的底色有摄像头图片闪烁摄像头是可以调用的,参数应该是有问题的。

时间: 2024-12-28 18:52:35

C#调用摄像头后为什么没反应的相关文章

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

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;usingSystem.Drawing.Design;namespacehealth{publicclassVideoAPI//视频API类{//视频API调用[DllImport("avicap32.dll")]publicstaticexternIntPtrcapCreateCap

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

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

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

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

neatbean写java桌面程序重写后paintComponent没被自动调用

问题描述 importjavax.swing.JComponent;importjava.awt.*;importjava.io.*;importjavax.imageio.*;/****@authoracer*/publicclassConnectComponetextendsJComponent{privateStringpath;privateImageimage;privatefinalintpathnumber=14;privatefinalintpathfirstnumber=6;p

Android应用调用摄像头开发例子

这两天玩Android玩的废寝忘食,Blog都好几天没加东西了,惭愧!记录一下这两天最崩溃的一个问题. 好早就装了开发环境,真正着手还是这两天,非常的生疏,虽然有SDK文档,那么多蚊子一般的字,实在没心思慢慢研究.这不想调用摄像头,原以为很容易就能搞定的,累计花了大概有一天的时间才只能保证不出错--至于效果嘛,难说啊! 先看API-examples里有调用 摄像头的例子,在模拟器上虽然看不出什么效果,毕竟还是能执行的,就是一个方块在黑白相间的背景上移动呗. 就这么一个Google提供的范例,传到

jsp如何实现调用servlet后页面不跳转

问题描述 jsp如何实现调用servlet后页面不跳转 想实现这样的功能:在页面点击按键后,servlet向邮箱发个验证码邮件,页面停留在当前页面,之前填写的信息保持不变.大概是异步通信的问题?不知道怎么实现...求解..(现在邮箱验证什么的都没问题,只是调用servlet后页面会跳转,但我希望能就停在当前页面,等输入验证码之后再按键,跳转到其他页面) 解决方案 可以采用AjaX实现 解决方案二: 相关请搜索jquery ajax 解决方案三: 为什么会跳转呢?你的request中是不是重定向了

javacv-JavaCV调用摄像头如何调节分辨率?高分 求高手

问题描述 JavaCV调用摄像头如何调节分辨率?高分 求高手 求高手! 想用JavaCV获取摄像头图像并拍照,买的高分辨率的摄像头,可是拍出来的照片才55kb,远不及直接连电脑拍出来的效果,请教如何在java程序中调节分辨率http://blog.csdn.net/sivyer123/article/details/22411861 这是示例程序 public class video { public static void main(String[] args) throws Exceptio

linux-Linux下使用opencv打开摄像头后无法彻底关闭摄像头

问题描述 Linux下使用opencv打开摄像头后无法彻底关闭摄像头 Linux下使用opencv调用cvCreateCameraCapture打开摄像头后,使用cvReleaseCapture无法彻底关闭摄像头,摄像头上的灯还亮着.只有退出程序才能关闭.如果不退出的话,再次调用cvCreateCameraCapture后就无法获取图像,出现 VIDIOC_STREAMON: 错误的文件描述符.初次接触opencv,不是很了解. 解决方案 ubuntu下使用OpenCV打开摄像头opencv打开

cocoa touch-最后一次调用结束后旋转罗盘

问题描述 最后一次调用结束后旋转罗盘 做了一个罗盘,每5度旋转.问题是,在用户旋转超过五度时,我会同时收到多条服务响应,然后选择方法也会被多次调用.在最后一次调用没结束之前,罗盘旋转非常迟钝. 在最后一次待用结束后,怎么旋转罗盘? - (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading { if (newHeading.headingAccuracy > 0) {