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

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

08.04.2012, 00:40. Показов 11445. Ответов 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
22.05.2014, 18:58
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Ты же у нас ГОЛОВА! Придумай способ попроще через DX, если время будет.
Времени к сожалению в образ, нашел код, но он глючный и ненадежный, а разбираться пока нет времени. Основано на DirectShow, там идентификация идет на основе Pin'ов по имени, изначально там стояло "CAPTURE", но на моей камере нет такого, а есть "Запись" и я его поменял, возможно у кого-то по-другому. Может будет время - разберусь, но DirectShow - большая и сложная тема.
Вложения
Тип файла: rar DSMini3.rar (15.1 Кб, 45 просмотров)
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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru