Чай или кофе?
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 142
1

Захват изображения с web камеры ПК

03.05.2022, 20:11. Показов 1742. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как захватить изображение с камеры и преобразовать в байты (без сохранения в файл и показа на форму/picturebox)?

Использую так:
VB.NET
1
2
3
Dim myCam As New ICam 'Класс ниже
myCam.InitCam(Me.PicOutput.Handle.ToInt32) 'Инициализируем и сразу показываем изображение
myCam.CloseCam() 'Останавливаем/отключаем
Захватываю с помощью этого класса:
VB.NET
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
Option Explicit On 
Option Strict On
 
Public Class ICam
#Region " Api/Constants "
 
    Private Const WS_CHILD As Integer = &H40000000
    Private Const WS_VISIBLE As Integer = &H10000000
    Private Const SWP_NOMOVE As Short = &H2S
    Private Const SWP_NOZORDER As Short = &H4S
    Private Const WM_USER As Short = &H400S
    Private Const WM_CAP_DRIVER_CONNECT As Integer = WM_USER + 10
    Private Const WM_CAP_DRIVER_DISCONNECT As Integer = WM_USER + 11
    Private Const WM_CAP_SET_VIDEOFORMAT As Integer = WM_USER + 45
    Private Const WM_CAP_SET_PREVIEW As Integer = WM_USER + 50
    Private Const WM_CAP_SET_PREVIEWRATE As Integer = WM_USER + 52
    Private Const WM_CAP_GET_FRAME As Long = 1084
    Private Const WM_CAP_COPY As Long = 1054
    Private Const WM_CAP_START As Long = WM_USER
    Private Const WM_CAP_STOP As Long = (WM_CAP_START + 68)
    Private Const WM_CAP_SEQUENCE As Long = (WM_CAP_START + 62)
    Private Const WM_CAP_SET_SEQUENCE_SETUP As Long = (WM_CAP_START + 64)
    Private Const WM_CAP_FILE_SET_CAPTURE_FILEA As Long = (WM_CAP_START + 20)
 
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (hwnd As Integer, wMsg As Integer, wParam As Short, lParam As String) As Integer
    Private Declare Function capCreateCaptureWindowA Lib "avicap32.dll" (lpszWindowName As String, dwStyle As Integer, x As Integer, y As Integer, nWidth As Integer, nHeight As Short, hWndParent As Integer, nID As Integer) As Integer
    Private Declare Function capGetDriverDescriptionA Lib "avicap32.dll" (wDriver As Short, lpszName As String, cbName As Integer, lpszVer As String, cbVer As Integer) As Boolean
    Private Declare Function BitBlt Lib "GDI32.DLL" (hdcDest As IntPtr, nXDest As Integer, nYDest As Integer, nWidth As Integer, nHeight As Integer, hdcSrc As IntPtr, nXSrc As Integer, nYSrc As Integer, dwRop As Int32) As Boolean
 
#End Region
 
    Private iDevice As String
    Private hHwnd As Integer
    Public iRunning As Boolean
    Private CamFrameRate As Integer = 1
    Private ReadOnly OutputHeight As Integer = 240
    Private ReadOnly OutputWidth As Integer = 360
 
    Public Sub ResetCam()
        'resets the camera after setting change
        If iRunning Then
            CloseCam()
            Application.DoEvents()
            If SetCam() = False Then
                MessageBox.Show("Errror Setting/Re-Setting Camera")
            End If
        End If
    End Sub
 
    Public Sub InitCam(ParentH As Integer)
        'Gets the handle and initiates camera setup
        If iRunning Then
            MessageBox.Show("Camera Is Already Running")
            Exit Sub
        Else
            hHwnd = capCreateCaptureWindowA(iDevice, WS_VISIBLE Or WS_CHILD, 0, 0, OutputWidth, CShort(OutputHeight), ParentH, 0)
            If Not SetCam() Then MessageBox.Show("Error setting Up Camera")
        End If
    End Sub
 
    Public Sub SetFrameRate(iRate As Long)
        'sets the frame rate of the camera
        CamFrameRate = CInt(1000 / iRate)
        ResetCam()
    End Sub
 
    Private Function SetCam() As Boolean
        'Sets all the camera up
        If SendMessage(hHwnd, WM_CAP_DRIVER_CONNECT, CShort(iDevice), CType(0, String)) = 1 Then
            SendMessage(hHwnd, WM_CAP_SET_PREVIEWRATE, CShort(CamFrameRate), CType(0, String))
            SendMessage(hHwnd, WM_CAP_SET_PREVIEW, 1, CType(0, String))
            Me.iRunning = True
            Return True
        Else
            Me.iRunning = False
            Return False
        End If
    End Function
 
    Public Function CloseCam() As Boolean
        'Closes the camera
        If Me.iRunning Then
            CloseCam = CBool(SendMessage(hHwnd, WM_CAP_DRIVER_DISCONNECT, 0, CType(0, String)))
            Me.iRunning = False
        End If
    End Function
 
    Public Function CopyFrame(src As PictureBox, rect As RectangleF) As Bitmap
        If iRunning Then
            Using srcPic As Graphics = src.CreateGraphics
                Using srcBmp As New Bitmap(src.Width, src.Height, srcPic)
                    Using srcMem As Graphics = Graphics.FromImage(srcBmp)
 
                        Dim HDC1 As IntPtr = srcPic.GetHdc
                        Dim HDC2 As IntPtr = srcMem.GetHdc
                        BitBlt(HDC2, 0, 0, CInt(rect.Width), CInt(rect.Height), HDC1, CInt(rect.X), CInt(rect.Y), 13369376)
 
                        Return CType(srcBmp.Clone(), Bitmap)
 
                        'Clean Up 
                        srcPic.ReleaseHdc(HDC1)
                        srcMem.ReleaseHdc(HDC2)
                    End Using
                End Using
            End Using
        Else
            MessageBox.Show("Camera Is Not Running!")
        End If
        Return Nothing
    End Function
 
    Public Function FPS() As Integer
        Return CInt(1000 / (CamFrameRate))
    End Function
End Class
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.05.2022, 20:11
Ответы с готовыми решениями:

Захват изображения с камеры
Есть некая камера со своим SDK. Пишу простенькое приложение для захвата с неё изображения. Ниже...

Захват видео изображения с веб-камеры
Возникли проблемы при создании массива в C#.В общем дело обстоит так: имеется захват видео...

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

Захват изображения с веб камеры используя AForge
Ребят помогите сделать снимок с веб камеры, есть код для записи видео с веб камеры: using System;...

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

14
Чай или кофе?
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 142
06.05.2022, 09:54  [ТС] 2
Я так понял ответа не будет...
0
I can
06.05.2022, 10:57
  #3

Не по теме:

Цитата Сообщение от SashaCorp Посмотреть сообщение
Я так понял ответа не будет...
А сам ты много кому ответил за два года?

0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,028
06.05.2022, 13:21 4
SashaCorp, С таким подходом, видимо, не будет...
1
Чай или кофе?
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 142
09.05.2022, 08:44  [ТС] 5
А сам ты много кому ответил за два года?
(К форуму я обращаюсь редко так как уже много чего знаю.(если бы я знал куда...))

С таким подходом, видимо, не будет...
Что я сделал не так?
(я ведь никого не обижал и не грубил...)
0
738 / 552 / 141
Регистрация: 27.01.2019
Сообщений: 1,243
09.05.2022, 11:40 6
SashaCorp, Вот отлично работающий код.Он не мой,нашел на просторах инета,я его лишь немного доработал.
Вложения
Тип файла: rar WebCam.rar (3.10 Мб, 46 просмотров)
3
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,028
09.05.2022, 11:45 7
Цитата Сообщение от SashaCorp Посмотреть сообщение
Я так понял ответа не будет...
На мой взгляд, звучит как претензия к форумчанам, вы ждете, ждете, а вам всё не отвечают...
2
738 / 552 / 141
Регистрация: 27.01.2019
Сообщений: 1,243
09.05.2022, 12:10 8
Цитата Сообщение от SashaCorp Посмотреть сообщение
А сам ты много кому ответил за два года?
Вот,I can, как раз многим помог!
1
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
09.05.2022, 13:47 9
А в чём, собственно, вопрос заключается?
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,028
09.05.2022, 13:54 10
Замабувараев, Насколько я понял, нужно сделать фото с веб-камеры, молча, не отобража само фото на форме и молча же пооучить его бинарные данные (наверное для дальнейшего сохранения в файл хоти и написано в задании - без сохранения в файл, так же возможно сохранение в БД или передаче по сети).
0
Чай или кофе?
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 142
09.05.2022, 18:24  [ТС] 11
Извиняюсь наверное я многого прошу - не объясняю толком что нужно...
Yury Komar
Да! - передача по сети.
Также спасибо I can
Спасибо Тим70 за проект.
0
738 / 552 / 141
Регистрация: 27.01.2019
Сообщений: 1,243
09.05.2022, 18:27 12
Лучший ответ Сообщение было отмечено SashaCorp как решение

Решение

SashaCorp, То же с переводом картинки в байты и не показывать картинку.
Вложения
Тип файла: rar WebCam 2.rar (1.38 Мб, 10 просмотров)
1
Чай или кофе?
0 / 0 / 0
Регистрация: 09.05.2020
Сообщений: 142
09.05.2022, 18:37  [ТС] 13
Спасибо но... я не упомянул что нужно без dll/библиотек,
поэтому я и вставил класс 'Захвата' в своём вопросе.
(то что вы предложили работает)
0
738 / 552 / 141
Регистрация: 27.01.2019
Сообщений: 1,243
09.05.2022, 19:30 14
SashaCorp, Ну тут уж помочь ни чем не могу...

Добавлено через 34 минуты
Готовые решения и полезные коды на Visual Basic .NET (Часть-1) Вот посмотрите тут, Dll из ресурсов.
1
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,028
09.05.2022, 20:39 15
SashaCorp, Чем точнее будет изложена мысль и поставлена задача, тем больше вероятность того, что Вам помогут.
Но вот "требовать" ответа от тех, кто Вам помогает безвозмездно - плохой тон... Не стоит так делать.

Думаю, мы поняли друг друга. Главное, что Вы и сами это поняли.
2
09.05.2022, 20:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2022, 20:39
Помогаю со студенческими работами здесь

Как мне организовать захват изображений и видео с web камеры в .NET Core?
Задача - сделать в приложении захват фото с вебки. В общем, нужно фотографировать клиентов и...

Захват видео с IP Web камеры
Здравствуйте, мастера. Помогите разобраться с вопросом видеозахвата с IP Web камеры. Хотелось бы,...

Захват видео с web-камеры
Добрый день!Подскажите как лучше всего работать с web-камерой на С++. Какие библиотеки...

Захват видео с web-камеры
Добрый день! Передо мной стоит следующая задача. Организовать Preview с web-камеры. Вот ветка в...

Захват изображения с веб-камеры
Привет всем! Накипело, много статеек пересмотрел как это сделать, везде свои касяки, т.к....


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru