webcam video in gui widergeben und um 90° drehen....

  • Hy @ all

    hab da n problem, muss in einem gui ein webcam video ( live ) anzeigen, aber um 90 ° drehen.

    bisheriges tool läuft super .. anbinden der webcam und einblenden des standbildes .. ( zum vergleichen)

    nur das drehen klappt nicht, weis auch nicht wie ich das hin kriegen soll

    hat jemand n tip ?

    [autoit]

    ; credits -- http://www.autoitscript.com/forum/index.ph…opic=88917&st=0

    [/autoit][autoit][/autoit][autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Array.au3>
    #Include <Color.au3>

    [/autoit][autoit][/autoit][autoit]

    Opt("GUIOnEventMode",1)
    Opt("PixelCoordMode",2)

    [/autoit][autoit][/autoit][autoit]

    ;************************************************
    ; Variables
    ;************************************************

    [/autoit][autoit][/autoit][autoit]

    $mypic = "C:\Dokumente und Einstellungen\user\Desktop\refbild1.jpg"

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;----- Open DLLs -----
    $dAviCap32 = DllOpen("avicap32.dll")
    $dUser32 = DllOpen("user32.dll")

    [/autoit][autoit][/autoit][autoit]

    ;************************************************
    ; GUI
    ;************************************************

    [/autoit][autoit][/autoit][autoit]

    $height = @DesktopHeight - (@DesktopHeight/8)
    $width = @DesktopWidth - (@DesktopWidth/8)

    [/autoit][autoit][/autoit][autoit]

    $GUI = GUICreate("",$width,$height) ; wide, hide
    GUISetOnEvent($GUI_EVENT_CLOSE,"_Close")

    [/autoit][autoit][/autoit][autoit]

    ;************************************************
    ; WebCam
    ;************************************************

    [/autoit][autoit][/autoit][autoit]

    $dWebCam = DllCall($dAviCap32,"int","capCreateCaptureWindow","str","cap","int", _
    BitOR($WS_CHILD,$WS_VISIBLE),"int",($width/20),"int",($height/20),"int",($width/2)-(2*($width/20)),"int",(1.3*($width/2)-(2*($width/20))),"hwnd",$GUI,"int",1)

    [/autoit][autoit][/autoit][autoit]

    DllCall($dUser32,"int","SendMessage","hWnd",$dWebCam[0],"int",0x400 + 10,"int",0,"int",0)
    DllCall($dUser32,"int","SendMessage","hWnd",$dWebCam[0],"int",0x400 + 50,"int",1,"int",0)
    DllCall($dUser32,"int","SendMessage","hWnd",$dWebCam[0],"int",0x400 + 52,"int",1,"int",0)

    [/autoit][autoit][/autoit][autoit]

    ;************************************************
    ; WebCam
    ;************************************************

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUICtrlCreatePic ($mypic, ($width/2)+($width/20), ($height/20),($width/2)-(2*($width/20)),(1.3*($width/2)-(2*($width/20))) ) ; 960 breit zu 1280 hoch sind 1,3 verhältniss

    [/autoit][autoit][/autoit][autoit]

    GUISetState(@SW_SHOW)
    ;################################################################
    ; LOOP
    ;################################################################
    While 1
    Sleep(100)
    Wend
    ;################################################################
    ; END LOOP
    ;################################################################

    [/autoit][autoit][/autoit][autoit]

    Func _Close()
    ;************************************************
    ; Exit
    ;************************************************
    DllCall($dUser32,"int","SendMessage","hWnd",$dWebCam[0],"int",0x400 + 181,"int",0,"int",0)
    DllCall($dUser32,"int","SendMessage","hWnd",$dWebCam[0],"int",0x400 + 11,"int",0,"int",0)
    DllClose($dUser32)
    DllClose($dAviCap32)

    Exit

    EndFunc

    [/autoit]


    DANKE !!

    aach noch was, hat jemand irgend was zur ansteuerung einer WEB-CAM ?!

    hab nur das

    [autoit]

    $WM_CAP_START = 0x400
    $WM_CAP_UNICODE_START = $WM_CAP_START +100
    $WM_CAP_PAL_SAVEA = $WM_CAP_START + 81
    $WM_CAP_PAL_SAVEW = $WM_CAP_UNICODE_START + 81
    $WM_CAP_UNICODE_END = $WM_CAP_PAL_SAVEW
    $WM_CAP_ABORT = $WM_CAP_START + 69
    $WM_CAP_DLG_VIDEOCOMPRESSION = $WM_CAP_START + 46
    $WM_CAP_DLG_VIDEODISPLAY = $WM_CAP_START + 43
    $WM_CAP_DLG_VIDEOFORMAT = $WM_CAP_START + 41
    $WM_CAP_DLG_VIDEOSOURCE = $WM_CAP_START + 42
    $WM_CAP_DRIVER_CONNECT = $WM_CAP_START + 10
    $WM_CAP_DRIVER_DISCONNECT = $WM_CAP_START + 11
    $WM_CAP_DRIVER_GET_CAPS = $WM_CAP_START + 14
    $WM_CAP_DRIVER_GET_NAMEA = $WM_CAP_START + 12
    $WM_CAP_DRIVER_GET_NAMEW = $WM_CAP_UNICODE_START + 12
    $WM_CAP_DRIVER_GET_VERSIONA = $WM_CAP_START + 13
    $WM_CAP_DRIVER_GET_VERSIONW = $WM_CAP_UNICODE_START + 13
    $WM_CAP_EDIT_COPY = $WM_CAP_START + 30
    $WM_CAP_END = $WM_CAP_UNICODE_END
    $WM_CAP_FILE_ALLOCATE = $WM_CAP_START + 22
    $WM_CAP_FILE_GET_CAPTURE_FILEA = $WM_CAP_START + 21
    $WM_CAP_FILE_GET_CAPTURE_FILEW = $WM_CAP_UNICODE_START + 21
    $WM_CAP_FILE_SAVEASA = $WM_CAP_START + 23
    $WM_CAP_FILE_SAVEASW = $WM_CAP_UNICODE_START + 23
    $WM_CAP_FILE_SAVEDIBA = $WM_CAP_START + 25
    $WM_CAP_FILE_SAVEDIBW = $WM_CAP_UNICODE_START + 25
    $WM_CAP_FILE_SET_CAPTURE_FILEA = $WM_CAP_START + 20
    $WM_CAP_FILE_SET_CAPTURE_FILEW = $WM_CAP_UNICODE_START + 20
    $WM_CAP_FILE_SET_INFOCHUNK = $WM_CAP_START + 24
    $WM_CAP_GET_AUDIOFORMAT = $WM_CAP_START + 36
    $WM_CAP_GET_CAPSTREAMPTR = $WM_CAP_START + 1
    $WM_CAP_GET_MCI_DEVICEA = $WM_CAP_START + 67
    $WM_CAP_GET_MCI_DEVICEW = $WM_CAP_UNICODE_START + 67
    $WM_CAP_GET_SEQUENCE_SETUP = $WM_CAP_START + 65
    $WM_CAP_GET_STATUS = $WM_CAP_START + 54
    $WM_CAP_GET_USER_DATA = $WM_CAP_START + 8
    $WM_CAP_GET_VIDEOFORMAT = $WM_CAP_START + 44
    $WM_CAP_GRAB_FRAME = $WM_CAP_START + 60
    $WM_CAP_GRAB_FRAME_NOSTOP = $WM_CAP_START + 61
    $WM_CAP_PAL_AUTOCREATE = $WM_CAP_START + 83
    $WM_CAP_PAL_MANUALCREATE = $WM_CAP_START + 84
    $WM_CAP_PAL_OPENA = $WM_CAP_START + 80
    $WM_CAP_PAL_OPENW = $WM_CAP_UNICODE_START + 80
    $WM_CAP_PAL_PASTE = $WM_CAP_START + 82
    $WM_CAP_SEQUENCE = $WM_CAP_START + 62
    $WM_CAP_SEQUENCE_NOFILE = $WM_CAP_START + 63
    $WM_CAP_SET_AUDIOFORMAT = $WM_CAP_START + 35
    $WM_CAP_SET_CALLBACK_CAPCONTROL = $WM_CAP_START + 85
    $WM_CAP_SET_CALLBACK_ERRORA = $WM_CAP_START + 2
    $WM_CAP_SET_CALLBACK_ERRORW = $WM_CAP_UNICODE_START + 2
    $WM_CAP_SET_CALLBACK_FRAME = $WM_CAP_START + 5
    $WM_CAP_SET_CALLBACK_STATUSA = $WM_CAP_START + 3
    $WM_CAP_SET_CALLBACK_STATUSW = $WM_CAP_UNICODE_START + 3
    $WM_CAP_SET_CALLBACK_VIDEOSTREAM = $WM_CAP_START + 6
    $WM_CAP_SET_CALLBACK_WAVESTREAM = $WM_CAP_START + 7
    $WM_CAP_SET_CALLBACK_YIELD = $WM_CAP_START + 4
    $WM_CAP_SET_MCI_DEVICEA = $WM_CAP_START + 66
    $WM_CAP_SET_MCI_DEVICEW = $WM_CAP_UNICODE_START + 66
    $WM_CAP_SET_OVERLAY = $WM_CAP_START + 51
    $WM_CAP_SET_PREVIEW = $WM_CAP_START + 50
    $WM_CAP_SET_PREVIEWRATE = $WM_CAP_START + 52
    $WM_CAP_SET_SCALE = $WM_CAP_START + 53
    $WM_CAP_SET_SCROLL = $WM_CAP_START + 55
    $WM_CAP_SET_SEQUENCE_SETUP = $WM_CAP_START + 64
    $WM_CAP_SET_USER_DATA = $WM_CAP_START + 9
    $WM_CAP_SET_VIDEOFORMAT = $WM_CAP_START + 45
    $WM_CAP_SINGLE_FRAME = $WM_CAP_START + 72
    $WM_CAP_SINGLE_FRAME_CLOSE = $WM_CAP_START + 71
    $WM_CAP_SINGLE_FRAME_OPEN = $WM_CAP_START + 70
    $WM_CAP_STOP = $WM_CAP_START + 68

    [/autoit]

    gefunden ... und tu mir wahnsinnig schwer damit.

    BYE

  • hab hier n kleines skript, mit dem man ein bild in gui gedreht darstellen kann ..

    aber mit dem live video von der webcam krieg ich das irgend wie nicht hin ... ????? !!!! :cursing:

    Spoiler anzeigen

    #include <GDIPlus.au3>

    _GDIPlus_Startup()

    $hGui = GUICreate("Test Rotate", @DesktopWidth-(@DesktopWidth/8), @DesktopHeight-(@DesktopHeight/8))
    GUISetState()
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGui)

    $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Test.bmp")
    $iWidth = _GDIPlus_ImageGetWidth($hImage) * 96 / _GDIPlus_ImageGetVerticalResolution($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage) * 96 / _GDIPlus_ImageGetHorizontalResolution($hImage)

    $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_MatrixTranslate($hMatrix, 200, 500)

    ;For $i = 1 To 360
    _GDIPlus_MatrixRotate($hMatrix, 270, "False")
    _GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, -$iWidth / 2, -$iHeight / 2)
    Sleep(10)
    ;Next

    While GUIGetMsg() <> -3
    Sleep(10)
    WEnd

    _GDIPlus_MatrixDispose($hMatrix)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()


    .. need assistence ... !!! PLEASE !!