Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/335: Рейтинг темы: голосов - 335, средняя оценка - 4.91
7 / 2 / 0
Регистрация: 03.04.2007
Сообщений: 4

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

03.04.2007, 01:18. Показов 71387. Ответов 119
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, как получить изображение с веб-камеры через билдер, а то я хочу сделать веб-камерный шпион, но не знаю как.
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2007, 01:18
Ответы с готовыми решениями:

Изображение с веб камеры
Я написал программу которая снимает изображение с веб камеры!!! Возможно переписать мой код таким образом что бы виндовс не запрашивал с...

Изображение с Web-камеры
Привет, ребят... не гоните в другие темы... я согласен, что в этой теме: https://www.cyberforum.ru/cpp-builder/thread1737.html Всё...

Снимок с веб камеры
как снять в билдер с++ снимок с веб камеры? в компонент TImage к примеру.

119
844 / 739 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
08.01.2013, 23:59
Студворк — интернет-сервис помощи студентам
BRcr Да вот с его я архивов Samrisbe выташил экзешники и еще тут несколько архивов пробовал не заработало. Некоторые даже не компилируются ну там я думаю у нас среды разработки разных версий.

Добавлено через 2 минуты
Цитата Сообщение от Garic_ Посмотреть сообщение
NIKOLAYY,
То что я выложил рабочий только exe.
У тебя там на какую среду на С++ билдер 2005 ?

Добавлено через 14 минут
Garic
Не незапустился на моем компютере
Ошибок у меня вобще кучами кидает. Мож У нас опер. системы разные...
Сначала мелькнет окошко- экзешника и сразу закроется , потом второй раз нажму окно выкидывает с ошибкой че на скрине.
Сама программа из среды не компилируется
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
09.01.2013, 00:02
На BCB 6 у него там все. Поставь шестой билдер, экзешники и заработают. Просто откомпилированы они в режиме отладки, скажем так. Подробнее тут - Компиляция программы под С++ Builder, чтобы работала на других компьютерах

Но лучше всего естественно взять исходники и допинать их под своего билдера...

Добавлено через 1 минуту
Цитата Сообщение от NIKOLAYY Посмотреть сообщение
Сама программа из среды не компилируется
Задача программиста как раз и заключается в том, чтоб преодолеть сие недоразумение.
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
09.01.2013, 00:17
NIKOLAYY,
Мож У нас опер. системы разные...
У меня винда7, Builder6. delhi7
0
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 6
01.04.2013, 13:06
У меня возникла проблема с использованием библиотеки vfw.h, сам работаю на XE3, на 6 отлично работало (но сейчас проблема с запуском builder). Caм компилятор ругается "[bcc32 Error] IdGlobal.hpp(616): E2219 Wrong number of arguments in call of macro 'ToHex'", это лишь одна из них, не любит он idglobal, все ошибки там. Может там другая есть библиотека с похожими функциями?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.04.2013, 14:55
Цитата Сообщение от soulfire Посмотреть сообщение
У меня возникла проблема с использованием библиотеки vfw.h, сам работаю на XE3, на 6 отлично работало (но сейчас проблема с запуском builder). Caм компилятор ругается "[bcc32 Error] IdGlobal.hpp(616): E2219 Wrong number of arguments in call of macro 'ToHex'", это лишь одна из них, не любит он idglobal, все ошибки там. Может там другая есть библиотека с похожими функциями?
Вполне возможно ..
Может помочь обвертывание vfw.h в пространство имен.
0
 Аватар для BL00k
6 / 6 / 0
Регистрация: 27.03.2013
Сообщений: 49
01.04.2013, 20:36
Вот держи исходник по твоей теме! (Но шпиона не получится сделать, уж больно много защит в ОС)
Вложения
Тип файла: rar Web.rar (5.45 Мб, 202 просмотров)
0
 Аватар для BL00k
6 / 6 / 0
Регистрация: 27.03.2013
Сообщений: 49
01.04.2013, 20:47
Вот сама программа...
Project1.rar

 Комментарий модератора 
Прикрепленное изображение удалено.
Правила,
п.5.10.
Запрещено накручивать репутацию и другую статистику пользователя любым способом, включая создание пользователей-клонов, а также склонять (агитировать) других пользователей к ее изменению.
Пока - устное предупреждение.
1
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 114
16.04.2013, 16:14
Какие библиотеки подключать для HWndC?
0
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 1
24.01.2016, 18:42
Небольшая информация:

У некоторых возникает ошибка при работе: Cannot open clipboard: Access Denied (доступ запрещён)
Это проблема Clipboarda.
Ошибка вызвана тем, что какой то процесс в "Форточках" уже захватил доступ к буферу.

Решить его можно просто проверяя какие данные в буфере.
И нету ли ошибки доступа к нему.

C++
1
2
3
4
5
6
7
8
9
10
11
12
    capGrabFrame(hWndC);
    if(capEditCopy(hWndC)){
        if(Clipboard()->HasFormat(CF_BITMAP) ){
            try{
                VideoImage->Picture->LoadFromClipboardFormat(CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP),0);
            }
            catch(...)
            {
 
            }
        }
    }
0
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 5
01.10.2016, 13:08
решилась данная проблема ?
потому что каждый следующий раз после корректной работы происходит запрос на выбор устройства и пустое изображение в окне. Что с этим поделать ? И на разных компьютерах происходит по-разному. На некоторых все в порядке, а на других просто белое изображение.
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.10.2016, 13:17
Не используйте клипборд - это изначально плохое решение.

Добавлено через 52 секунды
Цитата Сообщение от Alex619 Посмотреть сообщение
потому что каждый следующий раз после корректной работы происходит запрос на выбор устройства и пустое изображение в окне
Что непонятно, камер и дров может быть несколько нужно их выбрать.
0
2628 / 1640 / 266
Регистрация: 19.02.2010
Сообщений: 4,352
01.10.2016, 21:41
Цитата Сообщение от Avazart Посмотреть сообщение
Не используйте клипборд - это изначально плохое решение.
Надо перефразировать так: не используйте VideoForWindows - используйте DirectShow (который чуть менее древний - но таки древний настолько, что примеров захвата кадров/видео с его помощью в инете достаточно, в т.ч. и на этом форуме, ЕМНИП).
0
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 5
02.10.2016, 18:54
Каким образом тогда писать ? Используя возможности directshow
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
02.10.2016, 19:46
Можете попробовать без буфера обмена
Код
C++
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
//---------------------------------------------------------------------------
#include <vfw.h>
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//STEP 1: Create capture window
HWND hwndParent= Handle;
HWND hWndC = capCreateCaptureWindow ( NULL, WS_CHILD | WS_VISIBLE , 0, 0, 640, 480, hwndParent, 0);
 
//STEP 2: Connect to a capture device
capDriverConnect (hWndC, 0);
 
// OPTIONAL STEP: Setup frame rate
CAPTUREPARMS CaptureParms;
float FramesPerSec = 30.0;
capCaptureGetSetup(hWndC, &CaptureParms, sizeof(CAPTUREPARMS));
CaptureParms.dwRequestMicroSecPerFrame = (DWORD) (1.0e6 / FramesPerSec);
capCaptureSetSetup(hWndC, &CaptureParms, sizeof (CAPTUREPARMS));
 
// OPTIONAL STEP: Setup resolution
//    BITMAPINFO psVideoFormat;
//capGetVideoFormat(hWndC, &psVideoFormat,sizeof(psVideoFormat));
//psVideoFormat.bmiHeader.biWidth = 640;
//psVideoFormat.bmiHeader.biHeight = 480;
//    capSetVideoFormat(hWndC, &psVideoFormat,sizeof(psVideoFormat));
capDriverDisconnect (hWndC); //, 0);//Can we do better?    /* <- тут почемуто два параметра передавалось */
capDriverConnect (hWndC, 0);
 
//STEP 3: Setup the preview window size
CAPSTATUS CapStatus;
capGetStatus(hWndC, &CapStatus, sizeof (CAPSTATUS));
::SetWindowPos(hWndC, NULL, 0, 0, CapStatus.uiImageWidth, CapStatus.uiImageHeight, SWP_NOZORDER | SWP_NOMOVE);
 
//STEP 4: Previewing video
capPreview(hWndC, TRUE);       // start preview
capPreviewRate(hWndC, 15);     // rate, in milliseconds, the frame rate here is just for preview window, not for capturing
capPreviewScale(hWndC,TRUE);
}
//---------------------------------------------------------------------------

http://avazart.zz.mu/2014/02/%... %80%d1%8b/


Или через OpenCV
1
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
02.10.2016, 20:30
Avazart, можно еще доставать кадр из yuy2 через обратный вызов
C++
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
...
char *bmp_bits;
int w, h, d, rem;
 
void create_bmp_bits(void)
{
    BITMAPINFOHEADER bmi_hdr;
    bmi_hdr.biSize = sizeof(BITMAPINFOHEADER);
    bmi_hdr.biWidth = w;
    bmi_hdr.biHeight = h;
    bmi_hdr.biPlanes = 1;
    bmi_hdr.biBitCount = 24;
    bmi_hdr.biCompression = BI_RGB;
    d = w * 3;
    rem = d % 4;
    if (rem) rem = 4 - rem;
    bmi_hdr.biSizeImage = (d + rem) * h;
    bmi_hdr.biXPelsPerMeter = 0;
    bmi_hdr.biYPelsPerMeter = 0;
    bmi_hdr.biClrUsed = 0;
    bmi_hdr.biClrImportant = 0;
 
    HBITMAP bmp_h = CreateDIBSection(0, (BITMAPINFO *)&bmi_hdr, DIB_RGB_COLORS, (void **)&bmp_bits, 0, 0);
    main_form->Image1->Picture->Bitmap->Handle = bmp_h;
}
...
HWND cam_h = capCreateCaptureWindow //создадим окно видео-захвата
(
    "", //заголовок окна не нужен
    WS_CHILD, //указываем что окно дочернее, не указываем что окно видимое (мы сами будем отображать кадры)
    Image1->Left, Image1->Top, //координаты и размеры окна не имеют значения так как окно невидимое - для единообразия зададим координаты и размеры Image1
    Image1->Width, Image1->Height,
    Handle, 0 //дескриптор родительского окна, идентификатор окна
);
 
capDriverConnect(cam_h, 0);
 
int vf_size = capGetVideoFormat(cam_h, 0, 0);
char *vf = new char[vf_size];
capGetVideoFormat(cam_h, vf, vf_size);
BITMAPINFO *bmi = (BITMAPINFO *)vf;
w = bmi->bmiHeader.biWidth;
h = bmi->bmiHeader.biHeight;
delete [] vf;
 
create_bmp_bits();
 
capSetCallbackOnFrame(cam_h, fp);
...
//периодически вызываем
capGrabFrame(cam_h);
...
 
int clip(int x)
{
    if (x < 0) return 0;
    if (x > 255) return 255;
    return x;
}
 
LRESULT CALLBACK fp(HWND hwnd, LPVIDEOHDR hdr)
{
    BYTE *yuvframe = (BYTE *)hdr->lpData;
    int yuvidx = 0;
    for (int y = 0; y < h; y++)
    {
        BYTE* row = bmp_bits + (h - y - 1) * (d + rem);
        for (int x = 0; x < w; x += 2)
        {
            int y0 = yuvframe[yuvidx++];
            int u0 = yuvframe[yuvidx++];
            int y1 = yuvframe[yuvidx++];
            int v0 = yuvframe[yuvidx++];
 
            int idx = x * 3;
            int c = y0 - 16;
            int d = u0 - 128;
            int e = v0 - 128;
            row[idx + 0] = clip(( 298 * c + 516 * d + 128) >> 8); // blue
            row[idx + 1] = clip(( 298 * c - 100 * d - 208 * e + 128) >> 8); // green
            row[idx + 2] = clip(( 298 * c + 409 * e + 128) >> 8); // red
            c = y1 - 16;
            row[idx + 3] = clip(( 298 * c + 516 * d + 128) >> 8); // blue
            row[idx + 4] = clip(( 298 * c - 100 * d - 208 * e + 128) >> 8); // green
            row[idx + 5] = clip(( 298 * c + 409 * e + 128) >> 8); // red
        }
    }
 
    //в main_form->Image1->Picture->Bitmap лежит наш кадр
}
0
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 5
03.10.2016, 12:47
как тогда сохранять изображение ? и еще проблема в том, что когда мы сохраняли изображение в Image была функция Stretch для выравнивания изображения по окну. Как решить проблему в этом случае ?
0
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
03.10.2016, 18:13
Alex619, в этом коде изображение сбрасывается в Image - хотите рисуйте его с выравниванием хотите сохраняйте
0
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 5
03.10.2016, 18:47
Цитата Сообщение от Avazart Посмотреть сообщение
Можете попробовать без буфера обмена

http://avazart.zz.mu/2014/02/%... %80%d1%8b/
Или через OpenCV
я пробовал через opencv, там такая же проблема. Второй раз когда запускаешь программу пишет выбрать устройство и пустой экран потом. А как вы скинули видеоизображение без буфера обмена запускается всегда без проблем. Может в буфере причина ? и как тогда сохранять фото с камеры ?
0
Эксперт С++
 Аватар для Avazart
8484 / 6151 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
03.10.2016, 18:57
Лучший ответ Сообщение было отмечено vxg как решение

Решение

Цитата Сообщение от Alex619 Посмотреть сообщение
Второй раз когда запускаешь программу пишет выбрать устройство и пустой экран потом
Скорее всего что-то не так с компом/дровами. Ибо после выбора, должно появится изображение.

Добавлено через 1 минуту
Цитата Сообщение от Alex619 Посмотреть сообщение
Может в буфере причина ? и как тогда сохранять фото с камеры ?
Из-за буфера обмена:
Цитата Сообщение от Delta_Q_EG Посмотреть сообщение
Cannot open clipboard: Access Denied (доступ запрещён)
На выбор видео камеры это никак не влияет.
0
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 5
03.10.2016, 19:02
Цитата Сообщение от Avazart Посмотреть сообщение
Скорее всего что-то не так с компом/дровами. Ибо после выбора, должно появится изображение.
не у одного меня так, пробовал на компах одногруппников. На всех почти в следующие разы после запуска пустой экран. Может быть что-то не так с driverdisconnect ? вот код :
Вложения
Тип файла: txt Unit1.txt (2.2 Кб, 8 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.10.2016, 19:02
Помогаю со студенческими работами здесь

Снимок с веб-камеры
нашел такой пример, который выводит на окно видео в режиме онлайн с вэб камеры http://pastebin.com/c9LCaLRT (из за ограничения...

Запись видео с веб камеры
Новичок в этом деле. Я даже не знаю в какую тему мой вопрос опубликовать. Сейчас набираю теорию для программы. Попытался погуглить,...

Захват видео с веб-камеры (C++)
Здравствуйте! Я установил Visual Studio 2015 Community и библиотеку OpenCV 3.1.0 на Windows 10. Потом я написал программу, которая...

Снимок с веб камеры без использования буфера
Всем привет. Такой вопрос: можно ли копировать снимок не в буфер, а например, сразу в поток? capEditCopy(hWndC); ...

Черный экран при снимке с веб камеры
Всем привет. Надыбал такой код и поставил на кнопку: hWndC=capCreateCaptureWindow(&quot;&quot;,WS_CHILD, this-&gt;Left, this-&gt;Top,...


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru