С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/27: Рейтинг темы: голосов - 27, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 17.06.2011
Сообщений: 59

Сохранение снимка с веб камеры

10.03.2013, 15:32. Показов 5267. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Не как до меня не дойдет, есть программа захвата снимков с веб камеры, сохранение происходит при помощи CDialog, вопрос в том, как можно сохранить фотографию в указанное место, обычным кликом по кнопки не вызывая лишних окошек. Заранее спасибо!
Код прилагается
Вложения
Тип файла: zip research_web_camera.zip (2.5 Кб, 193 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.03.2013, 15:32
Ответы с готовыми решениями:

Получение снимка с Веб камеры
Всем доброго времени суток. Стало интересно попробовать получить снимок с веб камеры (не WIA, а обычной USB камеры). В интернете нашёл...

Как отключить автоматическое сохранение снимка с камеры в галерею
Бьюсь уже несколько дней. Из активити вызываю приложение Камера, указав место, где сохранить снимок. Получаю снимок, обрабатываю, использую...

Снимок с веб-камеры и сохранение в файл (hd)
Доброго времени суток. Есть задание: осуществить возможность сохранения снимка с веб-камеры в файл по нажатию на кнопку. Реализовал...

11
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
10.03.2013, 17:20
Цитата Сообщение от Vovan303 Посмотреть сообщение
обычным кликом по кнопки не вызывая лишних окошек
Закомментируй вызов диалога, а файл , куда сохранить? напиши явно в программе. Код кнопки тут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub cmd4_Click()
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
'    With CDialog
'        .CancelError = True
'        .Flags = cdlOFNPathMustExist Or cdlOFNOverwritePrompt
'        .Filter = "Bitmap Picture(*.bmp)/*.bmp/JPEG Picture(*.jpg)/*.jpg/All Files/*.*"
'        .ShowSave
'        sFileName = .FileName
'   End With
sFileName = "C:\snimok.bmp"
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
End Sub
2
0 / 0 / 0
Регистрация: 17.06.2011
Сообщений: 59
10.03.2013, 18:15  [ТС]
Спасибо огромное) И еще вопросик, можно как-то простенько видео писать с этой программы?!
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
10.03.2013, 20:07
Цитата Сообщение от Vovan303 Посмотреть сообщение
как-то простенько видео писать с этой программы?!
В модуль допиши константы
Visual Basic
1
2
3
Public Const WM_CAP_DLG_VIDEOCOMPRESSION = WM_CAP_START + 46
Public Const WM_CAP_SEQUENCE = WM_CAP_START + 62
Public Const WM_CAP_FILE_SAVEASA = WM_CAP_START + 23
А из процедуры cmd4_Click() убери всё и напиши сл. строчки
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub cmd4_Click()
Dim sFileName As String
 
    sFileName = "C:\test1.avi"
     Call SendMessage(hCap, WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)
     Call SendMessage(hCap, WM_CAP_SEQUENCE, 0, 0)
     Call SendMessage(hCap, WM_CAP_FILE_SAVEASA, 0, ByVal CStr(sFileName))
    
 
End Sub
2
0 / 0 / 0
Регистрация: 17.06.2011
Сообщений: 59
13.03.2013, 14:03  [ТС]
Pro_grammer, Это я так понимаю делает захват фото и видео не с самой камеры, а из PictureBox-а. А можно ли вообще убрать PictureBox и делать снимки и видео не в BMP, а в jpeg и соответственно рулить качеством с кода. Помогите пожалуйста. Спасибо)
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
13.03.2013, 16:59
Цитата Сообщение от Vovan303 Посмотреть сообщение
не с самой камеры, а из PictureBox-а
Нет, именно с камеры. PictureBox для контроля. Можно сделать Picture размером 1х1 пиксель и его не будет видно, но снимки работать будут.
Цитата Сообщение от Vovan303 Посмотреть сообщение
делать снимки и видео не в BMP, а в jpeg
Видео в BMP - это как? Видео сохраняется со сжатием кодека, который вы же и выбираете. Можно выбрать без сжатия, тогда будет лучшее качество при огромном размере файла.
Снимки делаются в BMP - это лучшее качество, на которое способна ваша камера ( в настройках FormatCam выберите самый большой размер из возможных).
VB6 Не умеет самостоятельно преобразовать bmp в JPG формат. Для этого есть сторонние библиотеки - поищите на форуме, где то было.

Добавлено через 8 минут
Простая библиотека тут описана. Если в процедуру PngToJpg подсунуть файл c камеры (BMP), то она его преобразует в JPG.
В общем прочитай тему.
1
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 4
23.03.2013, 20:04
Pro_grammer, снова беда, собрал весь код, через таймер сделал автоматическое фотографирование... делает 74 фотографии и затыкается, сохраняет пустые файлы, вылечивается только перезагрузкой пк. В чем может быть проблема? Может быть буфер камеры переполняется?!
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.03.2013, 21:22
Цитата Сообщение от vovan3030 Посмотреть сообщение
В чем может быть проблема?
Скинь код, посмотрю. Сам с такой проблемой не сталкивался.
0
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 4
24.03.2013, 00:31
Pro_grammer,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Dim hCap As Long
Dim W  As String
Private Sub Timer1_Timer()'таймер на 60000
'запускаем камеру
hCap = capCreateCaptureWindow("Take a Camera Shot", WS_CHILD Or WS_VISIBLE, 0, 0, PicWebCam.Width, PicWebCam.Height, PicWebCam.hWnd, 0)
    If hCap <> 0 Then
        Call SendMessage(hCap, WM_CAP_DRIVER_CONNECT, 0, 0)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    End If
    
W = Format(Now, "dd-mm-yy-h-m-s")
 
'делаем снимок
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    sFileName = "C:\"+ W + ".bmp" 
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    
'Выключаем камеру
Dim temp As Long
temp = SendMessage(hCap, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
 
End Sub
 
В модуле вроде не чего не трогал, все то же:
 
Public Const WS_CHILD As Long = &H40000000
Public Const WS_VISIBLE As Long = &H10000000
Public Const WM_USER As Long = &H400
Public Const WM_CAP_START As Long = WM_USER
Public Const WM_CAP_DRIVER_CONNECT As Long = WM_CAP_START + 10
Public Const WM_CAP_DRIVER_DISCONNECT As Long = WM_CAP_START + 11
Public Const WM_CAP_SET_PREVIEW As Long = WM_CAP_START + 50
Public Const WM_CAP_SET_PREVIEWRATE As Long = WM_CAP_START + 52
Public Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_CAP_START + 41
Public Const WM_CAP_FILE_SAVEDIB As Long = WM_CAP_START + 25
 
Public Declare Function capCreateCaptureWindow _
    Lib "avicap32.dll" Alias "capCreateCaptureWindowA" _
         (ByVal lpszWindowName As String, ByVal dwStyle As Long _
        , ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long _
        , ByVal nHeight As Long, ByVal hwndParent As Long _
        , ByVal nID As Long) As Long
 
Public Declare Function SendMessage Lib "user32" _
    Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long _
        , ByVal wParam As Long, ByRef lParam As Any) As Long
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
24.03.2013, 08:40
Цитата Сообщение от vovan3030 Посмотреть сообщение
сохраняет пустые файлы,
У меня при твоем коде вообще не делает снимков - камера не успевает включаться.
Переделал на включение при запуске, а снимки по таймеру. Снимает нормально, с частотой 1 кадр в секунду наснимал более 300 снимков. Исключил Image, прямо на форме изображение.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Dim hCap As Long
Dim W  As String
Private Sub Form_Load()
hCap = capCreateCaptureWindow("Take a Camera Shot", WS_CHILD Or WS_VISIBLE, 0, 0, 640, 480, Me.hWnd, 0) '
DoEvents
    If hCap <> 0 Then
        Call SendMessage(hCap, WM_CAP_DRIVER_CONNECT, 0, 0)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEWRATE, 66, 0&)
        Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    End If
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
'Выключаем камеру
Dim temp As Long
temp = SendMessage(hCap, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
 
End Sub
 
Private Sub Timer1_Timer() 'таймер на 60000
    
W = Format(Now, "dd-mm-yy-h-m-s")
 
'делаем снимок
Dim sFileName As String
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(False), 0&)
    sFileName = "C:\" + W + ".bmp"
    Call SendMessage(hCap, WM_CAP_FILE_SAVEDIB, 0&, ByVal CStr(sFileName))
DoFinally:
    Call SendMessage(hCap, WM_CAP_SET_PREVIEW, CLng(True), 0&)
    
 
End Sub
0
0 / 0 / 0
Регистрация: 23.03.2013
Сообщений: 4
24.03.2013, 11:24
Pro_grammer, да, пожалуй дело именно в том что не успевает.. в таймере все это делал для того что бы к камере могла подключиться другая программа, т.е что бы была доступна в некий промежуток времени. Как тогда можно сделать что бы при подключении другой программы камера становилась доступной, а моя программа находилась в режиме ожидания, а как только камера освобождалась моя сразу начинала фотографировать
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
24.03.2013, 11:53
Цитата Сообщение от vovan3030 Посмотреть сообщение
Как тогда можно сделать что бы при подключении другой программы камера становилась доступной
Насколько я знаю avicap32.dll не дает такой возможности подключать к одной камере несколько программ.
Должна быть возможность отследить ошибку подключения при занятой камере, какая - не знаю, как то не было необходимости тайного слежения при помощи камеры

А что бы успевала камера в вашем коде можно между включением WM_CAP_DRIVER_CONNECT и сохранением снимка сделать задержку ( к примеру использовать API Sleep ).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.03.2013, 11:53
Помогаю со студенческими работами здесь

Сохранение изображения с веб-камеры без использования буфера обмена
Здравствуйте, написал класс для работы с веб камерой из чужого примера, там та же самая проблема - для сохранения кадра используется буфер...

Нужен софт для использования веб камеры в качестве камеры наблюдения
Здрасте, у меня следующий вопрос: имеется старая веб камера, хочу ее аккуратно прилепить над входной дверью, и подключить к неттопу, нужен...

Веб Камера Logitech QuickCam Pro 5000 - нет изображения
Не в ту тему зашла, не нашла нужную, извините. У меня проблема веб-камерой Logitech QuickCam Pro 5000. Давно лежит, хотела установить....

Изображение с веб-камеры
Задача - получить фото/видео с вебкамеры под windows 7. Желательно готовый пример или хотя бы ссылки, где копать. (Понимаю, что не...

Картинка с веб камеры
Использую код: OpenWindow(0,0,0,500,500,&quot;&quot;) Define Ccam_lib1, *capAddress Ccam_lib1 = OpenLibrary(#PB_Any, &quot;avicap32.dll&quot;) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru