Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/35: Рейтинг темы: голосов - 35, средняя оценка - 5.00
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
1

directshow9

19.05.2013, 22:28. Показов 7263. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Че это за файл directshow9 и где его скачать?
(Не компилируется исходник по работе с вебкамерой)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2013, 22:28
Ответы с готовыми решениями:

DirectShow9
Всем доброго времени суток. Написал программу видео плеер, на DirectShow9, при развороте во весь...

Тем кто работал с DirectShow9 и полноэкранным режимом
Народ вот какая у меня проблема.Делаю я свой видеоплеер работающий через DirectX.С помощью вот етой...


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

Или воспользуйтесь поиском по форуму:
12
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
19.05.2013, 22:45 2
...экспорт хидеров API for Direct Show под DirectX 9.0 и ниже.
Вложения
Тип файла: zip sdk ds.zip (483.9 Кб, 538 просмотров)
1
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
19.05.2013, 23:23  [ТС] 3
Спс скачал - скпировал файлы и закинул их в папку Lib (вроде так надо?) На Делфи-7.
Но лезут новые ошибки Что с ними делать даже и незнаю, лучше скрин приведу.
Скрины исходников привел которые скачал с сайта, и положил в архив одну рабочую программу вместе с исходником который я так и не откомпилировал все еще.
Может будут у кого какие советы по этой теме, или ктото сможет откомпилить...
Миниатюры
directshow9   directshow9   directshow9  

Вложения
Тип файла: rar kamera_pol_izobr.rar (432.1 Кб, 148 просмотров)
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
19.05.2013, 23:26 4
работаешь в D7, а исходник написан в более старшей версии, убери
Delphi
1
Application.MainFormOnTaskBar:=true;
нет такого в D7
1
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
19.05.2013, 23:33  [ТС] 5
Ок! все работает теперь.


-----------------------------------------------
Сделано по этим статьям:

Учимся работать с Web камерой в Delphi.
http://basicsprog.ucoz.ru/publ/6-1-0-28
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
20.05.2013, 00:48 6
...которые в свою очередь являются копипастом моих статей из РЛ .

На исходниках.ру этому харамбуру написал по одной из статей, ссылку он проставил у себя, но сейчас смотрю сие не единичный случай.
1
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 3
10.08.2013, 20:11 7
raxp, Не знаю про какие ваши статьи идет речь, но мои статьи по работе с Web камерой и видеоплеер написаны на основе книги "Есенин DirectX и Delphi. Разработка графических и мультимедийных приложений", основной код взят из исходников классов UdxCaptureManager.pas и UdxMediaPlayer.pas, а также из демо примеров пакета DsPack, я этого не скрываю и на авторство кода не претендую. Ссылка на книгу Есенина есть в первой статье по видеоплееру. Остальные фрагменты кода взяты с просторов интернета, возможно там и есть что то ваше, но один и тот же фрагмент кода встречается у разных людей, поэтому авторство установить очень сложно. Единственное, что действительно взято у вас это статья по OnLine TV и как вы заметили ссылку на нее я поставил.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
08.09.2013, 22:04 8
Остальные фрагменты кода взяты с просторов интернета, возможно там и есть что то ваше
на просторах тырнета действительно много чего растиражировано, мною же на различных форумах.

Не знаю про какие ваши статьи идет речь
А я знаю . Кроме "онлайн-ТВ" могу указать явные места совпадений (даже после рерайтинга) не только в коде (в этот раз правда с DirectShow напрямую у вас, но в конце есть), но и тексте и структуре подачи материала http://basicsprog.ucoz.ru/publ/6-2-0-28 со статьей "Интеграция WEB камеры на сайт" (исходники)

действительно взято у вас это статья по OnLine TV и как вы заметили ссылку на нее я поставил.
с этим претензий не имею. Правда стоит оговорить, что изначально не было и появилась она после моего комментария там, насколько припоминает склероз. В общем, мне не жалко, жалко у пчелки.
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
08.09.2013, 23:46  [ТС] 9
Я переделал программу на компоненты с закладки DSPack - это гораздо проще, там основного кода получается строк на 15 и изображение от вебкамеры воспроизводится в компоненте VideoWindow.
Работает все нормально давно уже, но ни как не могу применить эффектов к изображению.
Я имею "чернобелое", "негатив" Ну и прочие эффекты.
Так же на и сервере снимки можно просматривать. в онлайн режиме.
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
09.09.2013, 00:07  [ТС] 10
Вот она эта тема Веб-камера и Делфи
Тут описана установка компонентов DSPack Компоненты DSPack
Там и исходник и код вроде там писал если кому пригодится.
Работает кстати на каких компьтерах тестил на всех работала где вебкамера стояла.
Миниатюры
directshow9  
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
09.09.2013, 07:49 11
Эффекты применить просто, у вас есть интерфейс граббера (тем паче обертка готовая), подключенный к графу фильтров, есть картинка, после граббера из видеопотока эту картинку можно визуализировать в том же контейнере Image. Так вот перед визуализацией и применяем эффекты к битовой матрице.

Пример эффектов:
Delphi
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
 procedure InvertBitmap(bmp: TBitmap);                                  // + инверсия
 procedure Emboss(bmp: TBitmap; AMount: Integer);                       // - контур
 procedure RotateBitmap(Bitmap: TBitmap; Angle: Double; bg: TColor);    // + поворот
 procedure BlackWhite(bmp: TBitmap; gray: boolean);                     // - ч-б/серое
 
var bmp : tbitmap;
 
implementation
 
//--- инверсия
type PByteArray = ^TByteArray;
     TByteArray = array[0..32767] of Byte;
procedure InvertBitmap(bmp: TBitmap);
var x, y: Integer;
    ByteArray: PByteArray;
begin
 bmp.PixelFormat:= pf24bit;
 for y:= 0 to bmp.Height - 1 do begin
  ByteArray:= bmp.ScanLine[y];
  for x:= 0 to bmp.Width * 3 - 1 do
   ByteArray[x] := 255 - ByteArray[x]
 end
end;
//---
 
//--- контур
procedure Emboss(bmp: TBitmap; AMount: Integer);
var x, y, i : integer;
    p1, p2: PByteArray;
begin
 bmp.PixelFormat:= pf24bit;
 for i:= 0 to AMount do begin
  for y:= 0 to bmp.Height-2 do begin
   p1:= bmp.ScanLine[y];
   p2:= bmp.ScanLine[y+1];
   for x:= 0 to bmp.Width do begin
    p1[x*3]  := (p1[x*3]+(p2[(x+3)*3] xor $FF)) shr 1;
    p1[x*3+1]:= (p1[x*3+1]+(p2[(x+3)*3+1] xor $FF)) shr 1;
    p1[x*3+2]:= (p1[x*3+1]+(p2[(x+3)*3+1] xor $FF)) shr 1
   end
  end
 end
end;
//---
 
//--- поворот
procedure RotateBitmap(Bitmap: TBitmap; Angle: Double; bg: TColor);
type TRGB = record
       B, G, R: Byte;
     end;
     pRGB = ^TRGB;
     pByteArray = ^TByteArray;
     TByteArray = array[0..32767] of Byte;
     TRectList = array [1..4] of TPoint;
 
var x, y, W, H, v1, v2: Integer;
    Dest, Src: pRGB;
    VertArray: array of pByteArray;
    Bmp: TBitmap;
 
  procedure SinCos(AngleRad: Double; var ASin, ACos: Double);
  begin
    ASin := Sin(AngleRad);
    ACos := Cos(AngleRad);
  end;
 
  function RotateRect(const Rect: TRect; const Center: TPoint; Angle: Double): TRectList;
  var DX, DY: Integer;
      SinAng, CosAng: Double;
    function RotPoint(PX, PY: Integer): TPoint;
    begin
      DX := PX - Center.x;
      DY := PY - Center.y;
      Result.x := Center.x + Round(DX * CosAng - DY * SinAng);
      Result.y := Center.y + Round(DX * SinAng + DY * CosAng);
    end;
  begin
    SinCos(Angle * (Pi / 180), SinAng, CosAng);
    Result[1] := RotPoint(Rect.Left, Rect.Top);
    Result[2] := RotPoint(Rect.Right, Rect.Top);
    Result[3] := RotPoint(Rect.Right, Rect.Bottom);
    Result[4] := RotPoint(Rect.Left, Rect.Bottom);
  end;
 
  function Min(A, B: Integer): Integer;
  begin
    if A < B then Result := A
             else Result := B;
  end;
 
  function Max(A, B: Integer): Integer;
  begin
    if A > B then Result := A
             else Result := B;
  end;
 
  function GetRLLimit(const RL: TRectList): TRect;
  begin
    Result.Left := Min(Min(RL[1].x, RL[2].x), Min(RL[3].x, RL[4].x));
    Result.Top := Min(Min(RL[1].y, RL[2].y), Min(RL[3].y, RL[4].y));
    Result.Right := Max(Max(RL[1].x, RL[2].x), Max(RL[3].x, RL[4].x));
    Result.Bottom := Max(Max(RL[1].y, RL[2].y), Max(RL[3].y, RL[4].y));
  end;
 
  procedure Rotate;
  var x, y, xr, yr, yp: Integer;
      ACos, ASin: Double;
      Lim: TRect;
  begin
    W := Bmp.Width;
    H := Bmp.Height;
    SinCos(-Angle * Pi/180, ASin, ACos);
    Lim := GetRLLimit(RotateRect(Rect(0, 0, Bmp.Width, Bmp.Height), Point(0, 0), Angle));
    Bitmap.Width := Lim.Right - Lim.Left;
    Bitmap.Height := Lim.Bottom - Lim.Top;
    Bitmap.Canvas.Brush.Color := bg;
    Bitmap.Canvas.FillRect(Rect(0, 0, Bitmap.Width, Bitmap.Height));
    for y := 0 to Bitmap.Height - 1 do begin
      Dest := Bitmap.ScanLine[y];
      yp := y + Lim.Top;
      for x := 0 to Bitmap.Width - 1 do begin
        xr := Round(((x + Lim.Left) * ACos) - (yp * ASin));
        yr := Round(((x + Lim.Left) * ASin) + (yp * ACos));
        if (xr > -1) and (xr < W) and (yr > -1) and (yr < H) then begin
          Src := Bmp.ScanLine[yr];
          Inc(Src, xr);
          Dest^ := Src^;
        end;
        Inc(Dest);
      end;
    end;
  end;
 
begin
  Bitmap.PixelFormat := pf24Bit;
  Bmp := TBitmap.Create;
  try
    Bmp.Assign(Bitmap);
    W := Bitmap.Width - 1;
    H := Bitmap.Height - 1;
    if Frac(Angle) <> 0.0
      then Rotate
      else
    case Trunc(Angle) of
      -360, 0, 360, 720: Exit;
      90, 270: begin
        Bitmap.Width := H + 1;
        Bitmap.Height := W + 1;
        SetLength(VertArray, H + 1);
        v1 := 0;
        v2 := 0;
        if Angle = 90.0 then v1 := H
                        else v2 := W;
        for y := 0 to H do VertArray[y] := Bmp.ScanLine[Abs(v1 - y)];
        for x := 0 to W do begin
          Dest := Bitmap.ScanLine[x];
          for y := 0 to H do begin
            v1 := Abs(v2 - x)*3;
            with Dest^ do begin
              B := VertArray[y, v1];
              G := VertArray[y, v1+1];
              R := VertArray[y, v1+2];
            end;
            Inc(Dest);
          end;
        end
      end;
      180: begin
        for y := 0 to H do begin
          Dest := Bitmap.ScanLine[y];
          Src := Bmp.ScanLine[H - y];
          Inc(Src, W);
          for x := 0 to W do begin
            Dest^ := Src^;
            Dec(Src);
            Inc(Dest);
          end;
        end;
      end;
      else Rotate;
    end;
  finally
    Bmp.Free;
  end;
end;
//---
 
 
//--- градации
type
 TRGB=record
 b,g,r : byte;
end;
type
  ARGB=array [0..1] of TRGB;
  PARGB=^ARGB;
procedure BlackWhite(bmp: tbitmap; gray: boolean);
var i,j,c: integer;
    p: PARGB;
begin
 bmp.PixelFormat:= pf24bit;
 for i:=0 to bmp.Height-1 do begin
  p:= bmp.ScanLine[i];
  for j:= 0 to bmp.Width-1 do begin
   c:= round(0.3*p[j].r+0.59*p[j].g+0.11*p[j].b);
   if not gray then //градации серого
    if c >= 128 then c:= 255 else c:= 0;
   p[j].r:= c;
   p[j].g:= c;
   p[j].b:= c
  end
 end
end;
//---
Как использовать (в потоке):
Delphi
1
2
3
4
...
SampleGrabber1.GetBitmap(bmp);
BlackWhite(bmp, true);
Image1.Picture.Bitmap.assign(bmp);
0
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 3
09.09.2013, 16:34 12
А я знаю . Кроме "онлайн-ТВ" могу указать явные места совпадений (даже после рерайтинга) не только в коде (в этот раз правда с DirectShow напрямую у вас, но в конце есть), но и тексте и структуре подачи материала.
О каком рерайте идет речь? Ваша статья, которую вы здесь приводите (кстати вижу ее впервые), ни в одной строчке текста, не совпадает с моей, у меня про DirectShow и Web-камеру, а у вас Web-камера на сайте. Мало того, что мы используем разные технологии для захвата изображения с камеры (у меня DirectShow, а у вас VFW), так и разные способы передачи по FTP (у меня через модуль WinInet, а у вас Indy). О какой структуре и подаче материала вы говорите? У меня все статьи излагаются в таком стиле и такой структуре и к вашей подаче материала ни какого отношения не имеют, да и вообще ваша статья это сказки про "белого бычка" с картинками. Возможно это и интересно комуто почитать, но чтоб создать свое приложение по вашей статье, то это к сожалению не для простых смертных.((( Кроме самой идее у нас по сути ничего не совпадает, да и идею я взял с программы WebCam Plus, единственное, что все настройки вынесены на одну форму . А за идею назвать статью копипастом - это бред или мания величие (надеюсь вам за идею претензий не предъявляют?). Единственное из почти 100 строчек кода совпадает 10 - это код JavaScript, который выгружает изображение на Web - страницу, вот ссылка на этот код http://www.mobile-mir.com/en/OwnMobileWebCam.php на котором нет подписи автора и утверждать, что он ваш я не могу, а может вы сами его отсюда взяли?

В общем, мне не жалко, жалко у пчелки.
Однако вы на каждом форуме, кричите, что это ваше, у вас воруют, как и в случае с этой статьей, которая еще раз повторю, даже по сути своей (показывает в первую очередь как получить изображение с камеры через DirectShow, а потом все остальное, FTP, передача, трансляция, сайт ...) отличается от вашей, хотя и выполняют одно и тоже.)))
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
09.09.2013, 17:42 13
ню-ню
0
09.09.2013, 17:42
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru