[VB.NET] webcam afmetingen afkappen

Pagina: 1
Acties:

  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Met behulp van VFW kan ik een mooie capture window maken.
Maar het probleem is dat ik alleen een gedeelte wil opslaan, namelijk een stukje met de verhouding 10x15.
Ook wil ik dat van tevoren zien ik het preview window. Maar dat lukt me dus beide niet, iemand enig idee hoe dat kan)

(Gezocht op Got, google, msdn)

  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Weet niemand dit? :?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Wat heb je geprobeerd, wat ging er verkeerd, toon eens wat relevante code. Wil je een capture van een Window maken, of van het hele scherm? In wat voor object heb je je plaatje staan?
Misschien moet je ervoor zorgen dat je topicstart wat dichter bij de gewenste vorm in de buurt komt.

My personal website


  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Nou het probleem is dat als je een capturewindow creeert met de pixel verhouding 10x15 dat dan het beeld van de webcam vervormt, en niet gewoon afkapt.

Ook heb ik geprobeerd er een kader overheen te maken, zodat je een 10x15 schermpje krijgt, maar het capture window heeft altijd de voorgrond.

Ja, de code is nog gewoon standaard functies van VFW zoals je normaal je webcam captured.
Bijvoorbeeld:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
hWndC = capCreateCaptureWindow("Webcam Capture window", WS_CHILD Or WS_VISIBLE, 0, 0, 640, 480, hwnd, 0)
        status = CBool(hWndC)
        If status Then
            status = SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0L)
       If SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, device, 0) Then
            '
            'Set the preview scale
            '
            SendMessage(hWndC, WM_CAP_SET_SCALE, True, 0)

            '
            'Set the preview rate in milliseconds
            '
            SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0)

            '
            'Start previewing the image from the camera
            '
            SendMessage(hWndC, WM_CAP_SET_PREVIEW, True, 0)
end if
end if


Ben er net achtergekomen, dat als je bij "SendMessage(hWndC, WM_CAP_SET_SCALE, True, 0)" True verandert naar false, dat hij dan een deel afkapt, niet het deel wat ik wil, maarja het is iets. Maar dan heb ik weer het probleem, want dit heeft alleen effect op previewen, niet op saven

[ Voor 4% gewijzigd door Scorpion1984 op 10-01-2005 18:03 ]


  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Ook deze functie wil niet:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
structure LPPOINT 
    dim x as integer
    dim y as integer
end structure

public sub Pos(byVal xCor as integer, byVal yCor as integer)
    dim tmp as LPPOINT

    tmp.x=xCor
    tmp.y=yCor
    SendMessage(hWndC, WM_CAP_SET_SCROLL, 0, tmp)
end sub


Sendmessage returns altijd false, oftewel hij is mislukt.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:20

gorgi_19

Kruimeltjes zijn weer op :9

Compiled dat uberhaupt? :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Ja natuurlijk
Ja je moet natuurlijk wel de Sendmessage functie van de dll importeren.

Visual Basic .NET:
1
2
3
4
5
public Const WM_USER As Integer = &H400S
public Const WM_CAP_START As Integer = WM_USER
Public Const WM_CAP_SET_SCROLL As Integer = WM_CAP_START + 55

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As LPPOINT) As Integer


En natuurlijk moet je de webcam initialiseren.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 10:20

gorgi_19

Kruimeltjes zijn weer op :9

Scorpion1984 schreef op maandag 10 januari 2005 @ 18:32:
Ja natuurlijk
Ja je moet natuurlijk wel de Sendmessage functie van de dll importeren.
Ik zat er meer in over dat je start met Private Sub, en eindit met End Function :) Vandaar de vraag of je geen tikfout hebt gemaakt en hij deze code niet compiled en je dus tegen de 'oude' code test :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Ow nee, is gewoon een tikfout ;) moet eindigen met end sub.

Hij compiled de code wel, (is trouwens niet exact de code die ik gebruik) maar de SendMessage functie returned altijd false bij dit gebruik, wat wil zeggen dat het mislukt is.

  • Scorpion1984
  • Registratie: Juni 2002
  • Laatst online: 17-05 11:19
Ik heb het gevonden, voor die functie moet de lparam, een byref zijn. (pointer naar)
Pagina: 1