Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142

Сделать фото с веб-камеры и сохранить на диск

02.04.2014, 11:29. Показов 15867. Ответов 44
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые форумчане. Пища для размышления: кто-нибудь видел или знает как можно реализовать на VBA, что бы при определенных действиях веб-камера захватывала изображение и сохраняла на компьютер? По идее драйвер стандартный для всех вебок и в теории (как я думаю) можно как то его вызвать с VBA. В инэте инфа вроде бы есть, буду тоже копаться, но может кто-нибудь знает.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2014, 11:29
Ответы с готовыми решениями:

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

Сделать фото вебкой, сохранить на диск, скачать программу и открыть в ней фото с правами админа
1. Посетитель заходит на сайт, на сайте гугл карта. 2. Нажимает кнопку. 3. Тут же, без всяких алертов, делается фото вебкой (лампочка...

Как сделать фото с встроенной веб-камеры?
Здравствуйте! Недавно появилась задача сделать программу (на ассемблере), которая бы подключалась к веб-камере, делала фото с неё,...

44
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
04.04.2014, 10:19
Студворк — интернет-сервис помощи студентам
Derjzemit, по идее в журнале http://rutracker.org/forum/viewtopic.php?t=3441524 за нумером 5 за 2006 год должно быть описано как. Но пока не тестил.
1
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
04.04.2014, 11:23  [ТС]
В общем, переделал немного ту программу, вот только одна проблема, может можете ее решить.

Есть форма, на ней кнопка, коды:

Visual Basic
1
2
3
4
Private Sub UserForm_Initialize()
TCap = False
mCapHwnd = capCreateCaptureWindow("VideoCapture", 0, 0, 0, 320, 240, Application.hWnd, 0)
End Sub
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
Private 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
 
Private Declare Function DestroyWindow Lib "user32" (ByVal hWnd As Long) As Boolean
 
 
Private Declare Function SendMessageAsLong Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
Private Declare Function SendMessageAsString Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long
 
 
 
Private Const WM_CAP_START As Long = &H400
Private Const WM_CAP_DRIVER_CONNECT As Long = _
WM_CAP_START + 10
Private Const WM_CAP_DRIVER_DISCONNECT _
As Long = WM_CAP_START + 11
Private Const WM_CAP_FILE_SAVEDIB As Long = _
WM_CAP_START + 25
Private Const WM_CAP_GRAB_FRAME As Long = _
WM_CAP_START + 60
Private Const WM_CAP_DLG_VIDEOFORMAT = _
WM_CAP_START + 41
Private Const WM_CAP_DLG_VIDEOSOURCE = _
WM_CAP_START + 42
 
Private mCapHwnd As Long
 
Private Sub CommandButton1_Click()
TCap = True
SendMessageAsLong mCapHwnd, WM_CAP_DRIVER_CONNECT, 0, 0
 
SendMessageAsLong mCapHwnd, WM_CAP_GRAB_FRAME, 0, 0
SendMessageAsString mCapHwnd, WM_CAP_FILE_SAVEDIB, 0, ThisWorkbook.Path & "\VIDEO.BMP"
                
TCap = False
SendMessageAsLong mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
 
End Sub
В общем-то работает как надо, делает скрин и оставляет на рабочем столе, только вот загогулина... После закрытия формы, эксель почему-то зависает, можете объяснить в чем проблема?

Добавлено через 4 минуты
В общем понял в чем проблема, вернее досмотрел пример) забыл добавить:

Visual Basic
1
2
3
4
5
6
7
Private Sub UserForm_Terminate()
    TCap = False
    SendMessageAsLong mCapHwnd, WM_CAP_DRIVER_DISCONNECT, 0, 0
    SendMessageAsLong mCapHwnd1, WM_CAP_DRIVER_DISCONNECT, 0, 0
    DestroyWindow mCapHwnd
    Unload UserForm1
End Sub
В целом работает и именно этого я и хотел добиться в начале топа, всем большое спасибо)
1
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
04.04.2014, 12:13
Нашёл продолжение темы. Левая камера делает изображение "на лету" - не сохраняя на диск. Правая всё так же сохраняет. Но из проблем не смог разобраться с детектором движения и сохранением на диск видеоряда. Если кто тоже заинтересовался, просветите пожалуйста (=

Собственно выдрал инструкцию с продолжением темы (во вложении)
Вложения
Тип файла: xls Video.xls (71.5 Кб, 81 просмотров)
Тип файла: pdf Иструкция.pdf (197.8 Кб, 86 просмотров)
0
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 32
04.04.2014, 13:05
Подскажите, у Вас что нибудь продвинулось?))
У меня тоже Windows 7, 64-битная с 10-м офисом.
Хотелось бы такую фичу иметь у себя))
0
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
04.04.2014, 13:14  [ТС]
video11.xls

Ну вот работающая программулина, которая по нажатии кнопки делает скрин на рабочий стол.
0
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 32
04.04.2014, 13:20
Derjzemit, при открытии файла сразу выдал ошибку
Миниатюры
Сделать фото с веб-камеры и сохранить на диск  
0
 Аватар для Derjzemit
269 / 14 / 0
Регистрация: 26.02.2014
Сообщений: 142
04.04.2014, 13:25  [ТС]
По теме я вроде бы видел, что ребята обсуждали, что дело может быть в дровах и разрядности, у вас файлик avicap32.dll есть на машине?

У меня работает на 64-разрядной системе и на ОС Windows 7 с офисом 2010 x32, если у вас все так же, то видимо дело в той библиотеке или драйверах.
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
04.04.2014, 13:47
Che_69, у вас 64 битный офис. В ошибке написано, что под него надо код переделывать. А среду, где нужен в 64 битный офис я не встречал (офтоп конеш, но если кто случаи знает дайте ссыль на почитать)
0
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 32
04.04.2014, 13:52
Derjzemit, да, такой файл имеется)).
korvindeson, а как переписать, чтобы работал не подскажете?
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
04.04.2014, 13:56
Che_69, не-а, никогда не работал с 64 биткой. А она точно вам нужна?
0
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 32
04.04.2014, 14:00
korvindeson, она предустановлена администраторами офиса)) я ничего не могу с этим поделать...
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
04.04.2014, 14:03
Тогда читайте про то какие отличия. В той ошибке вас просят добавить PtrSafe в раздел декларирования переменных
0
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 32
04.04.2014, 14:33
korvindeson, дописал необходимое. Один раз все корректно сработало, а в последующие создает пустой файл картинки
в чем может быть проблема?
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
04.04.2014, 14:48
Не в курсе. Попробовал файл видео11, который вам предложили, всё как часики. Да и в процессе выполнения делаются одни и те же шаги начиная с подключения драйвера и до его выгрузки. Однин раз сработало, должно бы и в остальные. Думаю проблема опять же с какой спецификой 64 битного офиса
0
0 / 0 / 0
Регистрация: 26.11.2015
Сообщений: 10
29.11.2015, 15:53
Ребята, а можно ли каким-то образом использовать "media foundation" для этих целей? Ведь avicap32 уже устарел, а примеров для vba по использованию media foundation ну вообще ни...ра нет - уже неделю роюсь.
0
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 6
30.03.2016, 09:51
Ребят, может кто поможет, не могу переделать прогу под себя, нужно что бы фоткал прям в екселе и сохранял в екселе фотки в нужном размере, т.е схема кнопка-окно фотографирования-сохранение в екселе.

Добавлено через 1 час 35 минут
не могу вывести картинку на рабочий лист именно как "картинку" помогите
0
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 6
30.03.2016, 09:51
вложение
Миниатюры
Сделать фото с веб-камеры и сохранить на диск  
0
0 / 0 / 0
Регистрация: 28.08.2015
Сообщений: 8
14.06.2016, 21:48
Все сработало, показывает захват, сохраняет картинку - то, что нужно. Вот только вопросик остался, никак на могу вычислить, где задается размер сохраненной картинки? т.е. сейчас картинка сохраняется 640х480, вес - 900кб. А как можно уменьшить сохраняемую картинку?

Добавлено через 23 часа 47 минут
Изменения значений в строке
Code
1
mCapHwnd = capCreateCaptureWindow("VideoCapture", 0, 0, 0, 320, 240, Application.hWnd, 0)
320 и 240 ничего не дают. Где же все-таки менять размер картинки?
0
1 / 1 / 0
Регистрация: 21.01.2019
Сообщений: 12
01.08.2019, 13:45
Цитата Сообщение от vmoffice Посмотреть сообщение
Все сработало, показывает захват, сохраняет картинку - то, что нужно. Вот только вопросик остался, никак на могу вычислить, где задается размер сохраненной картинки? т.е. сейчас картинка сохраняется 640х480, вес - 900кб. А как можно уменьшить сохраняемую картинку?
А можно ваш код в студию, если не потерялся. Привет из 2019
0
0 / 0 / 0
Регистрация: 28.08.2015
Сообщений: 8
14.08.2019, 19:05
Держи. Форма и код как есть. Делал для себя.
Вин7, офис 2013
Вложения
Тип файла: xls Video_my.xls (69.5 Кб, 70 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2019, 19:05

Подскажите, как получить фото с камеры и сохранить её?
Здравствуйте! Пытаюсь получить фото с камеры телефона и сохранить её на карту памяти. Изучив пару примеров, понял, что нужно использовать...

Как получить фото с веб-камеры Logitech
Здравствуйте ! Можно ли как-нибудь в программе на C# (Visual Studio 2010, .Net 4) получить фото с веб-камеры Logitech ? Минимум:...

Указать путь сохранения фото с веб камеры
char filename; void SaveImage() { // сохраняем кадр в файл sprintf(filename, "Image%d.bmp", counter); printf(" Сделан...

Как сохранить фото с камеры напрямую во внутреннюю директорию приложения?
Стартую Intent камеры, добавляю Extra с Uri файла, куда надо сохранить снимок: Intent intent = new...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru