Tag: 摄像头

如何在不使用剪贴板的情况下复制图像?

问题:我有以下代码从网络摄像头捕获图像。 我的问题是这部分: SendMessage(hCaptureWnd, WM_CAP_COPY, 0, 0); // copy it to the clipboard 它的作用是将图像从窗口复制到剪贴板,然后从中创建一个字节数组。 它可以工作 – 只要你在程序运行时不使用剪贴板。 问题是,这对我自己来说甚至都不起作用,因为我有时会在Visual Studio需要很长时间来复制某些内容来开始调试Web应用程序,然后崩溃。 所以我的问题在这里: 如何在不使用剪贴板的情况下获取图像? 或者更具体地说,如何将hCaptureWnd转换为System.Drawing.Image? – 编辑: 我错过了说“没有创建文件,我想要一个字节数组”。 它是一个Web应用程序,因此运行应用程序的用户不应具有对文件系统的写访问权限(仅写入文件进行临时测试)… – 结束编辑: /// /// Captures a frame from the webcam and returns the byte array associated /// with the captured image /// /// number of milliseconds to wait between connect […]

C#中的网络摄像头使用

我正在使用C#编写一个程序来连接网络摄像头并使用它进行一些图像处理。 我有一个工作的应用程序,使用win32 api(avicap32.dll)连接到网络摄像头并向其发送消息,将其发送到剪贴板。 问题是,虽然可以从绘图中访问,但从程序中读取它会导致空指针。 这是我用来连接网络摄像头的代码: mCapHwnd = capCreateCaptureWindowA(“WebCap”, 0, 0, 0, 320, 240, 1024, 0); SendMessage(mCapHwnd, WM_CAP_CONNECT, 0, 0); SendMessage(mCapHwnd, WM_CAP_SET_PREVIEW, 0, 0); 这就是我用来将图像复制到剪贴板的方法: SendMessage(mCapHwnd, WM_CAP_GET_FRAME, 0, 0); SendMessage(mCapHwnd, WM_CAP_COPY, 0, 0); tempObj = Clipboard.GetDataObject(); tempImg = (System.Drawing.Bitmap)tempObj.GetData(System.Windows.Forms.DataFormats.Bitmap); 还有一些错误检查,我已从代码中删除它以缩短它。 提前致谢 :)