Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.01.2011, 14:48
Fox Mulder Fox Mulder вне форума
Прохожий
 
Регистрация: 19.01.2011
Сообщения: 16
Репутация: 10
По умолчанию Захват изображения с камеры И ВЫВОД НА CANVAS

Всем здрасти.
Хочу получить изображение с камеры и отслеживать передвижения объекта, точнее просто яркого пятна на изображении. Изображение получил, вывел на Panel ( код брал например отсюда http://ignatiev.su/blog/posts/webcam-borlanddelphi-7 ).
Вся суть проблемы что у панели нету канваса, и мне не считать цвет пикселей. Сначало я решил эту проблему весьма плохо (дибильным способом). Скопировав изображения с канваса экрана и поместив его в image. но это конечно не годиться и впервую очередь для реализиции моей идеи. Идея состоит в том чтобы передвигать камеру-курсор в игре при помощи вебкамеры. Конечно это может оказаться не примелимым, но в теории более-менее может все работать.
Единственный вопрос который меня сейчас беспокоит и кторый реально мне мешает:
Как получить изображения с камеры на объект который ИМЕЕТ CANVAS, например в image, а не на panel? а все коды которые я находил в инете выводили изображение на панель
Ответить с цитированием
  #2  
Старый 19.01.2011, 17:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну как вариант, можно выводить на форму. Там и хэндл есть и канва.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 19.01.2011 в 17:39.
Ответить с цитированием
  #3  
Старый 19.01.2011, 18:08
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

К панели можно "прицепить" канвас:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a: TControlCanvas;
  mp: TPoint;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  a := TControlCanvas.Create;
  a.Control := Panel1;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  a.Control := nil;
  a.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with a do
  begin
    Brush.Color := clRed;
    RoundRect(10, 10, 50, 50, 5, 5);
    Brush.Color := clGreen;
    RoundRect(30, 30, 70, 70, 5, 5);
    Brush.Color := clBlue;
    RoundRect(50, 50, 90, 90, 5, 5);
  end;
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
  ShowMessage(ColorToString(a.Pixels[mp.X, mp.Y]));
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  mp := Point(X, Y);
end;

end.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием
  #4  
Старый 19.01.2011, 23:27
Fox Mulder Fox Mulder вне форума
Прохожий
 
Регистрация: 19.01.2011
Сообщения: 16
Репутация: 10
По умолчанию

Страдалецъ
у меня идет вывод видео на панель и я не знаю как сделать вывод на форму лили image, там где есть канвас

dr. F.I.N.
спасибо за подробное объяснение.

я получил изображение с панели в image. у меня теперь проблема что все работает ровно до момента сворачивания формы, как только ее сворачиваеш ниче не работает

копирую с панели в bmp

Код:
  bmp_p.Canvas.copymode := cmSrcCopy;
  pDC := GetDC(VideoPanel.Handle);
  pCanvas := TCanvas.Create;
  pCanvas.Handle := pDC;

 BitBlt(bmp_p.Canvas.Handle, 0, 0,320, 240,
        pDC, 0, 0, SRCCOPY);

делаю изображение контрастнее:

Код:
bmp2:=tbitmap.Create;
bmp2.Assign(bmp_p);
a:=False;
Contrast(bmp_p,90,a);
bmp2.Free;

и нахожу требуемый цвет:
Код:
for x := 120 to 280 do begin //261
 for y := 50 to 150  do begin //221
 if inttostr(bmp_p.Canvas.Pixels[x,y])='16777215' then begin //16777215
...

все работает более-менее, но работает, до того пока не свернул приложение

Последний раз редактировалось Fox Mulder, 19.01.2011 в 23:31.
Ответить с цитированием
  #5  
Старый 21.01.2011, 17:56
Аватар для Sevas
Sevas Sevas вне форума
Прохожий
 
Регистрация: 17.06.2009
Сообщения: 20
Репутация: 10
По умолчанию

Могу предложить использовать DSPack для работы с камерами, он немного сложнее по коду чем твой пример, но всё работает нормально при любых сворачиваниях формы. Полученные кадры можно без проблем отправить на любую канву. Копай в его сторону. У меня твоя задача работает и есть в коде, если нужно выложу, но нужно установить DSPack в Делфи.
Посмотри вложение, в нём простенький экзешник-детектора движения который работает с любой камерой, как с вэб так и с тюнером, правда не помню откуда его скачаивал. Проверь на сворачивание формы.
Вложения
Тип файла: rar Web_camera.rar (199.7 Кбайт, 88 просмотров)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:59.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025