نمایش نتایج 1 تا 11 از 11

نام تاپیک: یک کلاس برای ارتباط با WebCam

  1. #1
    کاربر دائمی آواتار CodeMasterX
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Iran, Shiraz
    سن
    35
    پست
    960

    Cool یک کلاس برای ارتباط با WebCam


    Public Class iCam
    #Region "Api/constants"

    Private Const WS_CHILD As Integer = &H40000000
    Private Const WS_VISIBLE As Integer = &H10000000
    Private Const SWP_NOMOVE As Short = &H2S
    Private Const SWP_NOZORDER As Short = &H4S
    Private Const WM_USER As Short = &H400S
    Private Const WM_CAP_DRIVER_CONNECT As Integer = WM_USER + 10
    Private Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_USER + 11
    Private Const WM_CAP_SET_VIDEOFORMAT As Integer = WM_USER + 45
    Private Const WM_CAP_SET_PREVIEW As Integer = WM_USER + 50
    Private Const WM_CAP_SET_PREVIEWRATE As Integer = WM_USER + 52
    Private Const WM_CAP_GET_FRAME As Long = 1084
    Private Const WM_CAP_COPY As Long = 1054
    Private Const WM_CAP_START As Long = WM_USER
    Private Const WM_CAP_STOP As Long = (WM_CAP_START + 68)
    Private Const WM_CAP_SEQUENCE As Long = (WM_CAP_START + 62)
    Private Const WM_CAP_SET_SEQUENCE_SETUP As Long = (WM_CAP_START + 64)
    Private Const WM_CAP_FILE_SET_CAPTURE_FILEA As Long = (WM_CAP_START + 20)

    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Short, ByVal lParam As String) As Integer
    Private Declare Function capCreateCaptureWindowA Lib "avicap32.dll" (ByVal lpszWindowName As String, ByVal dwStyle As Integer, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Short, ByVal hWndParent As Integer, ByVal nID As Integer) As Integer
    Private Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, ByVal cbVer As Integer) As Boolean
    Private Declare Function BitBlt Lib "GDI32.DLL" (ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As Int32) As Boolean

    #End Region

    Private iDevice As String
    Private hHwnd As Integer
    Private lwndC As Integer

    Public iRunning As Boolean

    Private CamFrameRate As Integer = 15
    Private OutputHeight As Integer = 240
    Private OutputWidth As Integer = 360

    Public Sub resetCam()
    'resets the camera after setting change
    If iRunning Then
    closeCam()
    Application.DoEvents()

    If setCam() = False Then
    MessageBox.Show("Errror Setting/Re-Setting Camera")
    End If
    End If

    End Sub

    Public Sub initCam(ByVal parentH As Integer)
    'Gets the handle and initiates camera setup
    If Me.iRunning = True Then
    MessageBox.Show("Camera Is Already Running")
    Exit Sub
    Else

    hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, OutputWidth, CShort(OutputHeight), parentH, 0)


    If setCam() = False Then
    MessageBox.Show("Error setting Up Camera")
    End If
    End If
    End Sub

    Public Sub setFrameRate(ByVal iRate As Long)
    'sets the frame rate of the camera
    CamFrameRate = CInt(1000 / iRate)

    resetCam()

    End Sub

    Private Function setCam() As Boolean
    'Sets all the camera up
    If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, CShort(iDevice), CType(0, String)) = 1 Then
    SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, CShort(CamFrameRate), CType(0, String))
    SendMessage(hHwnd, WM_CAP_SET_PREVIEW, 1, CType(0, String))
    Me.iRunning = True
    Return True
    Else
    Me.iRunning = False
    Return False
    End If
    End Function

    Public Function closeCam() As Boolean
    'Closes the camera
    If Me.iRunning Then
    closeCam = CBool(SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, 0, CType(0, String)))
    Me.iRunning = False
    End If
    End Function

    Public Function copyFrame(ByVal src As PictureBox, ByVal rect As RectangleF) As Bitmap
    If iRunning Then
    Dim srcPic As Graphics = src.CreateGraphics
    Dim srcBmp As New Bitmap(src.Width, src.Height, srcPic)
    Dim srcMem As Graphics = Graphics.FromImage(srcBmp)


    Dim HDC1 As IntPtr = srcPic.GetHdc
    Dim HDC2 As IntPtr = srcMem.GetHdc

    BitBlt(HDC2, 0, 0, CInt(rect.Width), _
    CInt(rect.Height), HDC1, CInt(rect.X), CInt(rect.Y), 13369376)

    copyFrame = CType(srcBmp.Clone(), Bitmap)

    'Clean Up
    srcPic.ReleaseHdc(HDC1)
    srcMem.ReleaseHdc(HDC2)
    srcPic.Dispose()
    srcMem.Dispose()
    Else
    MessageBox.Show("Camera Is Not Running!")
    End If
    End Function

    Public Function FPS() As Integer
    Return CInt(1000 / (CamFrameRate))
    End Function

    End Class

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    تهران
    پست
    147
    با تشکر
    این کلاس برای هر نوع دوربین که قابل اتصال به کامپیوتر باشد قابل احرا می باشد؟

  3. #3
    کاربر دائمی آواتار DAMAVAND
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    همين اطراف
    پست
    373
    فرقی نمیکنه از چه دوربینی استفاده میکنید!!
    فقط حتما باید قبل از استفاده درایور شو نصب کنید.

  4. #4
    کاربر دائمی آواتار CodeMasterX
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    Iran, Shiraz
    سن
    35
    پست
    960
    درسته، هر Camera Device که روی ویندوز نصب شده باشه با توابع Cap میتونن کنترل بشن که معمولا وب کم ها و دوربین ها فیلم برداری خونگی هست.

  5. #5
    چطوری میشه تصویر وب کم رو تو شبکه lan برای کامپیوتر دیگه ای به طور زنده فرستاد؟
    باید چه چیزائی رو یاد گرفت ؟

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    90
    می شه یکم بیشتر در مورد این کلاس توضیح بدید
    و نحوه استفاده از اون رو بگید

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    90
    اگه می شه کسی که تونسته از این کلاس استفاده کنه لطفا یک نمونه پروژه از اون قرار بده.
    به این شکل برای من غیر قابل استفاده است

  8. #8
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    90

    نقل قول: یک کلاس برای ارتباط با WebCam

    این یک نمونه از استفاده از این کلاس
    فقط موضوع مهم اینه که در کلاسی که شما تعریف کردید نباید متغییر iRunning به صورت Public تعریف می شد( چون این متغییر از بیرون کلاس نباید مقدار دهی بشود(این متغییر برای چک کرد متصل شدن وب کم و وصل شدن به آن استفاده می شود)) حال من آنرا به شکل زیر تغییر دادم (در نمونه خودم این کلاس را با اجازه شما تغییر دادم)

    Public ReadOnly Property Running() As Boolean
    Get
    Return iRunning
    End Get

    End Property


    در قسمت ضمیمه نمونه پروژه ای که خودم تونستم ازش استفاده کنم رو می گزارم
    در ضمن در تابع Public Sub initCam(ByVal parentH As Integer ورودی یعنی parentH دارد که باید به آن یک هندلر ورودی بدهید .
    من هندلر مربوطه را از یک panel دریافت کردم( pnlHandle.Handle) . دوستان در صورت نیاز می توانند، این هندلر را از خود فرم دریافت کند.( me.Handle )

    در صورتی که دوستان نمونه بهتری ساختند آنرا نیز ارسال کنند تا من هم استفاده ببرم
    فایل های ضمیمه فایل های ضمیمه

  9. #9

    نقل قول: یک کلاس برای ارتباط با WebCam

    جناب arashkey
    من برنامه شما رو گرفتم ولي تصوير وب كم رو نشون نميده
    فقط عكس سياه نشون مي ده
    البته دستگاه من دوربين فيلم برداري usb خور هستش
    علتش چيه كه نشون نميده؟

  10. #10
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1384
    محل زندگی
    تهران
    پست
    90

    نقل قول: یک کلاس برای ارتباط با WebCam

    من این رو با وب کم لب تاپم امتحان کردم و تقریبا درست کار کرد (سایزش درست نبود)
    ولی دیگه از این کلاس استفاده نمی کنم
    چون یه برنامه آماده تو codeproject پیدا کردم که کارم رو راه انداخت
    می گردم لینکش رو براتون می گزارم

  11. #11
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1389
    محل زندگی
    Tehran
    پست
    365

    نقل قول: یک کلاس برای ارتباط با WebCam

    با سلام
    اقا یه همچین کلاسی واسه سیشارپ ندارید ؟

تاپیک های مشابه

  1. مشکل با webcam
    نوشته شده توسط babalengderaz در بخش C#‎‎
    پاسخ: 7
    آخرین پست: جمعه 17 خرداد 1387, 09:43 صبح
  2. پیدا کردن آدرس Webcam و اتصال آن با VB
    نوشته شده توسط مهیار کرمی در بخش برنامه نویسی در 6 VB
    پاسخ: 6
    آخرین پست: شنبه 23 تیر 1386, 14:56 عصر
  3. گرفتن عکس با WebCam در دلفی7
    نوشته شده توسط mjdeveloper در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 2
    آخرین پست: چهارشنبه 23 خرداد 1386, 02:13 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •