PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Камера - создание нескольких изображений


Камера - создание нескольких изображений

Сообщений 1 страница 8 из 8

1

Здравствуйте, пытаюсь сделать несколько изображений из Web камеры, но что-то не получается, не пойму как реализовать, 3-й вечер сижу, есть код, при нажатии на кнопку создает изображение нормально, а в цикле создает одно и тоже изображение.

Код:
OpenWindow(0, 261, 165, 845, 481, "") 

If OpenLibrary(0, "avicap32.dll") 
*capAddress = GetFunction(0, "capCreateCaptureWindowA")    
hWndCap.l = CallFunctionFast(*capAddress, 0, #WS_CHILD + #WS_VISIBLE, 0, 0, 150, 150, WindowID(0),0) 
SendMessage_(hWndCap, #WM_CAP_DRIVER_CONNECT, 0, 0) 
SendMessage_(hWndCap, #WM_CAP_SET_PREVIEW, #True, 0) 
SendMessage_(hWndCap, #WM_CAP_SET_PREVIEWRATE, 33, 0) 
SendMessage_(hWndCap, #WM_CAP_SET_SCALE, #True, 0) 
EndIf 

For i=0 To 5
FileName$ = "1"+i+".bmp"    
SendMessage_(hWndCap, #WM_CAP_FILE_SAVEDIBA, 0, FileName$) 
Debug i
Delay(500)
Next i

Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()  
EventType = EventType()

If Event = #PB_Event_Gadget 
If GadgetID = 1
i + 1
FileName$ = "1"+i+".bmp"    
SendMessage_(hWndCap, #WM_CAP_FILE_SAVEDIBA, 0, FileName$) 
EndIf 
EndIf 
   
Until Event = #PB_Event_CloseWindow
SendMessage_(hWndCap, #WM_CAP_STOP, 0, 0) 
SendMessage_(hWndCap, #WM_CAP_DRIVER_DISCONNECT, 0, 0) 
DestroyWindow_(hWndCap) 
CloseLibrary(0) 
End

Отредактировано Racer (15.01.2014 22:01:07)

0

2

А если создавать не в цикле, а по таймеру?

0

3

ну петр респект вам, совсем забыл про таймер, все отлично работает.

0

4

теперь назрел другой вопрос, можно ли как-то делать снимок без окна? тоесть без использования openWindow() ?

Код:
OpenWindow(0, 0, 0, 1, 1, "" )

If OpenLibrary(0, "avicap32.dll") 
*capAddress = GetFunction(0, "capCreateCaptureWindowA")
Camera.l = CallFunctionFast(*capAddress, 0, #WS_CHILD + #WS_VISIBLE, 0, 0, 1, 1, WindowID(0), 0)
SendMessage_(Camera, #WM_CAP_DRIVER_CONNECT, 0, 0) 
SendMessage_(Camera, #WM_CAP_SET_PREVIEW, #True, 0) 
SendMessage_(Camera, #WM_CAP_SET_PREVIEWRATE, 33, 0) 
EndIf


AddWindowTimer(0, 123, 500)
UseJPEGImageEncoder()


Repeat
Event = WindowEvent() 


If Event = #PB_Event_Timer And EventTimer() = 123
SendMessage_(Camera, #WM_CAP_EDIT_COPY, 0, 0)
GetClipboardImage(11, 32)
If SaveImage(11,"p.jpg",#PB_ImagePlugin_JPEG, 3)
Debug "Ok"  
EndIf
EndIf   


Until Event = #PB_Event_CloseWindow
SendMessage_(Camera, #WM_CAP_STOP, 0, 0) 
SendMessage_(Camera, #WM_CAP_DRIVER_DISCONNECT, 0, 0) 
CloseLibrary(0) 
End

Отредактировано Racer (15.01.2014 22:00:58)

0

5

Можно создать невидимое окно. Возможно в этом случае, получится делать снимки.

0

6

А без окна вообще никак? Кстати, если оно невидимое, то снимков не будет, (HideWindow(), или #PB_Invisible_Window), скорее всего буду создавать окно за пределами границ экрана, с флагами #PB_Window_SystemMenu и #PB_Window_Tool.

0

7

Racer написал(а):

А без окна вообще никак?

Racer написал(а):

CallFunctionFast(*capAddress, 0, #WS_CHILD + #WS_VISIBLE, 0, 0, 1, 1, WindowID(0), 0)

Функция требует окно.
Без него скорее всего работать не будет.

0

8

Racer написал(а):

если оно невидимое, то снимков не будет,

Надо так, и окна не видно, и снимки есть.

Код:
OpenWindow(0,0,0,0,0,"")

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Камера - создание нескольких изображений