문제

웹캠에 연결하고 이미지 조작을 수행하기 위해 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);

코드에서 제거한 오류 확인이 더 짧아집니다.

미리 감사합니다 :)

도움이 되었습니까?

해결책

최근 에이 분야에서 취미 작업을 시작했습니다.

우리는 사용에 정착했습니다 Opencv 도서관 opencvdotnet 싸개. 웹캠에서 프레임 캡처를 지원합니다.

using (var cv = new OpenCVDotNet.CVCapture(0))
{
    var image = cv.CreateCompatibleImage();
    // ...
    cv.Release();
}

이미지 조작을 수행하는 경우 OpenCV의 이미지 처리 알고리즘이 OpenCVDotnet.Algs 어셈블리 내에 래져졌습니다.

이 경로로 이동하기로 결정한 경우 OpenCV 버전 1.0을 설치하고 Vista 64 비트에있는 경우 "C : Program Files OpenCV"에 설치하십시오. opencv` "올바른 디렉토리에서 또는 다른 OpenCVDotnet에서 설치되지 않습니다).

다른 팁

응용 프로그램에 카메라 데이터를 가져 오는 두 가지 방법 인 Directshow 및 WIA가 실제로 있습니다. Microsoft는 귀하가 사용하는 것을 권장합니다 WIA, 그리고 WIA의 인터페이스는 뇌를 감싸는 것이 매우 간단합니다. 나는 오픈 소스를 만들고 출판했다 WIA 데스크탑 라이브러리 일을 바탕으로 한동안 전에 했어요.

이제 WIA의 문제는 너무 간단하다는 것입니다. 예를 들어, 카메라 속성 (프레임 속도, 해상도 등)을 조정하려면 WIA가 떨어집니다. Microsoft는 감가 상각 된 DirectShow이지만 실제로 모든 기능을 갖춘 교체품을 제공하지는 않았으며 기존의 모든 플랫폼에서 계속 잘 작동한다는 것을 알았습니다. 조만간).

아주 좋은 것이 있습니다 Sourceforge에서 Directshow 라이브러리. 그것의 유일한 "문제"는 그것이 정말로 복잡하고 Dshow가 처음부터 복잡하고 혼란스러워한다는 사실에서 비롯된 것입니다. 래퍼가 할 수있는 일이 많이 있습니다. 운동하기는 쉽지 않지만 비디오를 보여 주거나 프레임을 캡처하는 것과 같은 일반적인 사용 사례에 대한 샘플을 제공합니다. 오버레이를 추가하거나 다른 필터를 삽입하려면이를 수행 할 수 있지만 전혀 간단하지 않다는 소심해야합니다.

이 기사를 살펴보십시오.http://www.codeproject.com/kb/miscctrl/webcam_c_sharp.aspx

OpenCvNetWrapper를 설치하고 사용하는 것보다 너무 간단합니다.

Clipboard.getImage ()를 사용해 보셨습니까? 또한 다양한 클립 보드를 시도 할 수도 있습니다.

OpenCV 캡처, EMGU 캡처 및 내가 시도한 기타 모든 캡처 라이브러리
모두 같은 문제가 있습니다. 프로그래밍 방식으로 640x480보다 높을 수는 없습니다.
(Windows 비디오 소스 창을 열지 않고).

나는 이것 (작동하는)을 사용하는 것이 좋습니다.
https://github.com/oftheo/videoinput

이것은 또한 묻습니다 C#에서 웹 캠 이미지를 얻는 방법? 그리고 당신은 다음과 같은 유용한 것을 찾을 수 있습니다 (스팸에 대한 죄송하지만 실제로 질문에 대답하는 데 도움이됩니다).

방금 Windows App Camtimer (.NET/C#로 작성)의 완전한 SourCecode를 출시했습니다. 전체 코드를 다운로드/보기 (작업 웹캠 예제 포함) https://github.com/johanssonrobotics/camtimer

행복한 코딩!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top