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

Как получить доступ к веб-камере и сделать снимок

08.04.2012, 00:40. Показов 11280. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как получить доступ к веб камере (сделать снимок)? Может быть есть готовый контрол?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2012, 00:40
Ответы с готовыми решениями:

Как получить снимок c веб-камеры из ASP?
День добрый! Есть веб-камера Creative. Кто знает как можно с нее снимать снимок при загрузке ASP? Если нужен компонент, то кто знает где...

Как получить снимок с веб-камеры через пин STILL
Доброго времени суток! Подскажите, пожалуйста, как через PIN_CATEGORY_STILL кадр снять? при использовании PIN_CATEGORY_STILL вместо...

Получить снимок с веб камеры
На данный момент смешал эти коды http://**********/questions/366957/how-do-i-capture-video-from-a-webcam ...

31
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
22.05.2014, 17:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от The trick Посмотреть сообщение
а с использованием WM_CAP_GET_VIDEOFORMAT можно ставить выше и разрешение получается действительно выше
Это да, так бывает, если сама камера поддерживает, но он же вроде так пробовал, но у него не поддерживается?
А реально avicap32.dll устарел Надо как то через DX или другими продвинутыми неведомыми мне способами.
Ты же у нас ГОЛОВА! Придумай способ попроще через DX, если время будет.
1
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
22.05.2014, 18:09
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Это да, так бывает, если сама камера поддерживает, но он же вроде так пробовал, но у него не поддерживается?
Да я так пробовал, но меня смущает, что даже когда я стандартное расширения 640х480(или например ещё меньше), то пишет что не поддерживается.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
22.05.2014, 18:11
kkdamirkk, скорее всего. Ты так и не сказал что у тебя возвращает WM_CAP_GET_VIDEOFORMAT
0
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
22.05.2014, 18:28
The trick, я не смог разобраться WM_CAP_GET_VIDEOFORMAT
 Комментарий модератора 
Правила форума пункт 4.6. "Обсуждение вопросов - только в теме на форуме. Приглашения к обсуждению еще где-либо (в том числе и с помощью системы личных сообщений) запрещены, за исключением коммерческих разделов."
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
22.05.2014, 18:58
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ты же у нас ГОЛОВА! Придумай способ попроще через DX, если время будет.
Времени к сожалению в образ, нашел код, но он глючный и ненадежный, а разбираться пока нет времени. Основано на DirectShow, там идентификация идет на основе Pin'ов по имени, изначально там стояло "CAPTURE", но на моей камере нет такого, а есть "Запись" и я его поменял, возможно у кого-то по-другому. Может будет время - разберусь, но DirectShow - большая и сложная тема.
Вложения
Тип файла: rar DSMini3.rar (15.1 Кб, 42 просмотров)
1
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 18
23.05.2014, 00:52
Цитата Сообщение от The trick Посмотреть сообщение
Времени к сожалению в образ, нашел код, но он глючный и ненадежный, а разбираться пока нет времени. Основано на DirectShow, там идентификация идет на основе Pin'ов по имени, изначально там стояло "CAPTURE", но на моей камере нет такого, а есть "Запись" и я его поменял, возможно у кого-то по-другому. Может будет время - разберусь, но DirectShow - большая и сложная тема.
Вопрос задания параметров остается открытым, разобрался с камерой оказалось драйвера винда7 сама поставила кривые! Значит так получаем что когда работаем через ваше приложение всё равно не могу задать расширение нужное!
Справа в оф приложение логитеча мы можем ставить расширение 15 мп. И тогда фоткает на ура и сохраняет аж 5000х3000 пикселей. а слева в приложении VB этой вкладочки уже нет!
Миниатюры
Как получить доступ к веб-камере и сделать снимок   Как получить доступ к веб-камере и сделать снимок  
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.05.2014, 07:33
Цитата Сообщение от kkdamirkk Посмотреть сообщение
мы можем ставить расширение 15 мп. И тогда фоткает на ура и сохраняет аж 5000х3000 пикселей. а слева в приложении VB этой вкладочки уже нет!
Это просто приложение, которое интерполирует изображение ( тупо увеличивает, возможно хитрым алгоритмом, с минимальными потерями в качестве). И ты можешь подобное написать, увеличивай полученный снимок до нужного размера, делов то!
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
25.05.2014, 11:16
Цитата Сообщение от kkdamirkk Посмотреть сообщение
а слева в приложении VB этой вкладочки уже нет!
Кури DirectShow, в этой программе вообще нет настроек, ты должен их сделать сам. И вообще мне кажется что ты что-то неправильно делаешь, т.к. ты даже стандартный формат, который работает изначально не можешь задать.
0
 Аватар для Vladislav Grom
9 / 8 / 2
Регистрация: 01.11.2013
Сообщений: 111
03.03.2015, 22:08
Вот я использую этот код который нашёл в интернете
PureBasic
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
    Const WM_CAP As Short = &H400S
    Const WM_CAP_DRIVER_CONNECT As Integer = WM_CAP + 10
    Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_CAP + 11
    Const WM_CAP_EDIT_COPY As Integer = WM_CAP + 30
    Public Const WM_CAP_GET_STATUS As Integer = WM_CAP + 54
    Public Const WM_CAP_DLG_VIDEOFORMAT As Integer = WM_CAP + 41
 
    Const WM_CAP_SET_PREVIEW As Integer = WM_CAP + 50
    Const WM_CAP_SET_PREVIEWRATE As Integer = WM_CAP + 52
    Const WM_CAP_SET_SCALE As Integer = WM_CAP + 53
    Const WS_CHILD As Integer = &H40000000
    Const WS_VISIBLE As Integer = &H10000000
    Const SWP_NOMOVE As Short = &H2S
    Const SWP_NOSIZE As Short = 1
    Const SWP_NOZORDER As Short = &H4S
    Const HWND_BOTTOM As Short = 1
 
    Dim iDevice As Integer = 0
    Dim hHwnd As Integer
 
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
        (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
        ByRef lParam As CAPSTATUS) As Boolean
 
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
     (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Boolean, _
     ByRef lParam As Integer) As Boolean
 
    Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
         (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, _
         ByRef lParam As Integer) As Boolean
 
    Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (ByVal hwnd As Integer, _
        ByVal hWndInsertAfter As Integer, ByVal x As Integer, ByVal y As Integer, _
        ByVal cx As Integer, ByVal cy As Integer, ByVal wFlags As Integer) As Integer
 
    Declare Function DestroyWindow Lib "user32" (ByVal hndw As Integer) As Boolean
 
    Structure POINTAPI
        Dim x As Integer
        Dim y As Integer
    End Structure
 
    Public Structure CAPSTATUS
        Dim uiImageWidth As Integer
        Dim uiImageHeight As Integer
        Dim fLiveWindow As Integer
        Dim fOverlayWindow As Integer
        Dim fScale As Integer
        Dim ptScroll As POINTAPI
        Dim fUsingDefaultPalette As Integer
        Dim fAudioHardware As Integer
        Dim fCapFileExists As Integer
        Dim dwCurrentVideoFrame As Integer
        Dim dwCurrentVideoFramesDropped As Integer
        Dim dwCurrentWaveSamples As Integer
        Dim dwCurrentTimeElapsedMS As Integer
        Dim hPalCurrent As Integer
        Dim fCapturingNow As Integer
        Dim dwReturn As Integer
        Dim wNumVideoAllocated As Integer
        Dim wNumAudioAllocated As Integer
    End Structure
 
    Declare Function capCreateCaptureWindowA Lib "avicap32.dll" _
         (ByVal lpszWindowName As String, ByVal dwStyle As Integer, _
         ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, _
         ByVal nHeight As Short, ByVal hWndParent As Integer, _
         ByVal nID As Integer) As Integer
 
    Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (ByVal wDriver As Short, _
        ByVal lpszName As String, ByVal cbName As Integer, ByVal lpszVer As String, _
        ByVal cbVer As Integer) As Boolean
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        If Button2.Enabled Then
            ClosePreviewWindow()
        End If
    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LoadDeviceList()
        If ListBox1.Items.Count > 0 Then
            Button1.Enabled = True
            ListBox1.SelectedIndex = 0
            Button1.Enabled = True
        Else
            ListBox1.Items.Add("No Capture Device")
            Button1.Enabled = False
        End If
        Me.AutoScrollMinSize = New Size(100, 100)
        Button2.Enabled = False
        Button3.Enabled = False
        PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
        If Button2.Enabled = False Then
            PictureBox1.Hide()
            Me.Width = 621
            Me.Height = 141
        End If
    End Sub
    Private Sub LoadDeviceList()
        Dim strName As String = Space(100)
        Dim strVer As String = Space(100)
        Dim bReturn As Boolean
        Dim x As Short = 0
        Do
            bReturn = capGetDriverDescriptionA(x, strName, 100, strVer, 100)
            If bReturn Then ListBox1.Items.Add(strName.Trim)
            x += CType(1, Short)
        Loop Until bReturn = False
    End Sub
 
    Private Sub OpenPreviewWindow()
        Dim iHeight As Integer = PictureBox1.Height
        Dim iWidth As Integer = PictureBox1.Width
        hHwnd = capCreateCaptureWindowA(iDevice.ToString, WS_VISIBLE Or WS_CHILD, 0, 0, 1280, _
            1024, PictureBox1.Handle.ToInt32, 0)
        If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, iDevice, 0) Then
            SendMessage(hHwnd, WM_CAP_SET_SCALE, True, 0)
            SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, 66, 0)
            SendMessage(hHwnd, WM_CAP_SET_PREVIEW, True, 0)
            SetWindowPos(hHwnd, HWND_BOTTOM, 0, 0, PictureBox1.Width, PictureBox1.Height, _
                    SWP_NOMOVE Or SWP_NOZORDER)
            Button3.Enabled = True
            Button2.Enabled = True
            Button1.Enabled = True
        Else
            DestroyWindow(hHwnd)
            Button3.Enabled = False
        End If
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Dim r As Rectangle
        iDevice = ListBox1.SelectedIndex
        OpenPreviewWindow()
        Dim s As CAPSTATUS
        ListBox1.Items.Add(String.Format("Video Size {0} x {1}", s.uiImageWidth, s.uiImageHeight))
        Me.Width = 640
        Me.Height = 700
        PictureBox1.Show()
    End Sub
 
    Private Sub ClosePreviewWindow()
        SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, iDevice, 0)
        DestroyWindow(hHwnd)
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ClosePreviewWindow()
        Button3.Enabled = False
        Button2.Enabled = False
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Dim data As IDataObject
        Dim bmap As Bitmap
        SendMessage(hHwnd, WM_CAP_EDIT_COPY, 0, 0)
        data = Clipboard.GetDataObject()
        If data.GetDataPresent(GetType(System.Drawing.Bitmap)) Then
            bmap = CType(data.GetData(GetType(System.Drawing.Bitmap)), Bitmap)
            PictureBox1.Image = bmap
            Dim sfdImage = New SaveFileDialog
            Trace.Assert(Not (bmap Is Nothing))
            If sfdImage.ShowDialog = DialogResult.OK Then
                bmap.Save(sfdImage.FileName, Imaging.ImageFormat.Bmp)
            End If
        End If
    End Sub
 
End Class
всё нормально но вот только превью не работает. просто тупо чёрный квадрат ((
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
03.03.2015, 22:11
Vladislav Grom, разделом ошибся.
0
0 / 0 / 0
Регистрация: 03.03.2015
Сообщений: 6
03.03.2015, 22:15
А удолённый доступ к чужой камере. Как его получить
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.03.2015, 22:39
Цитата Сообщение от boss777 Посмотреть сообщение
А удолённый доступ к чужой камере. Как его получить
Имеете в виду удаленный?
Попросить разрешения у хозяина компа и через программу удаленного администрирования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.03.2015, 22:39
Помогаю со студенческими работами здесь

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

Подключиться к web-камере и сохранить от неё снимок
Здравствуйте, я начинающий в ассемблере, поэтому прошу понять и простить. Я честно перерыл весь интернет и уже голову сломал, но так и не...

Можно ли сделать на АС3 программку которая с одного нажатия кнопки делала снимок с веб камеры
Если можно, то скиньте пример, ну или ссылку где можно почитать. (очень нужно) за ранее спасибо!!!

Как делать снимок с веб камеры
Подскажите WinAPI функцию, с помощью которой можно сделать снимок с веб камеры. И есть ли WinAPI функция, с помощью которой можно...

Как сделать доступ из интернета к локальному веб серверу
Установлен локальный веб серве через сборку Xampp на Windows7. Что нужно сделать чтобы веб сервер стал доступен через интернет. Роутера...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru