7 / 2 / 0
Регистрация: 03.04.2007
Сообщений: 4

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

03.04.2007, 01:18. Показов 73678. Ответов 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
8489 / 6156 / 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 Мб, 214 просмотров)
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
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.10.2016, 13:17
Не используйте клипборд - это изначально плохое решение.

Добавлено через 52 секунды
Цитата Сообщение от Alex619 Посмотреть сообщение
потому что каждый следующий раз после корректной работы происходит запрос на выбор устройства и пустое изображение в окне
Что непонятно, камер и дров может быть несколько нужно их выбрать.
0
3129 / 1719 / 273
Регистрация: 19.02.2010
Сообщений: 4,511
01.10.2016, 21:41
Цитата Сообщение от Avazart Посмотреть сообщение
Не используйте клипборд - это изначально плохое решение.
Надо перефразировать так: не используйте VideoForWindows - используйте DirectShow (который чуть менее древний - но таки древний настолько, что примеров захвата кадров/видео с его помощью в инете достаточно, в т.ч. и на этом форуме, ЕМНИП).
0
0 / 0 / 0
Регистрация: 24.09.2016
Сообщений: 5
02.10.2016, 18:54
Каким образом тогда писать ? Используя возможности directshow
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 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
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,472
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
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,472
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
8489 / 6156 / 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 Кб, 14 просмотров)
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Альцгеймер и колоссальный объем вычислений
Programma_Boinc 08.08.2026
Альцгеймер и колоссальный объем вычислений Сейчас по направлению болезни Альцгеймера идет колоссальный объем вычислений. Это один из главных приоритетов проекта. Такой массовый наплыв задач. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
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
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru