Luxophia

Форк
0
/
LUX.Vision.OpenCV.pas 
269 строк · 7.8 Кб
1
unit LUX.Vision.OpenCV;
2

3
interface //#################################################################### ■
4

5
uses FMX.Graphics,
6
     ocv.core_c, ocv.core.types_c;
7

8
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
9

10
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
11

12
     //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
13

14
     TocvImage       = class;
15
       TocvImage3    = class;
16
         TocvBitmap3 = class;
17
       TocvImage4    = class;
18
         TocvBitmap4 = class;
19

20
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvImage
21

22
     TocvImage = class
23
     private
24
     protected
25
       _Core :pIplImage;
26
       ///// アクセス
27
       procedure SetCore( const Core_:pIplImage ); virtual;
28
       function GetWidth :Integer; virtual;
29
       function GetHeight :Integer; virtual;
30
       function GetChannelN :Integer; virtual;
31
     public
32
       ///// プロパティ
33
       property Core     :pIplImage read _Core       write SetCore;
34
       property Width    :Integer   read GetWidth;
35
       property Height   :Integer   read GetHeight;
36
       property ChannelN :Integer   read GetChannelN;
37
     end;
38

39
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvImage3
40

41
     TocvImage3 = class( TocvImage )
42
     private
43
     protected
44
     public
45
       ///// メソッド
46
       procedure CopyFrom( const Image_:TocvImage4 );
47
       procedure CopyTo( const Image_:TocvImage4 );
48
     end;
49

50
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvImage4
51

52
     TocvImage4 = class( TocvImage )
53
     private
54
     protected
55
     public
56
       ///// メソッド
57
       procedure CopyFrom( const Image_:TocvImage3 ); overload;
58
       procedure CopyTo( const Image_:TocvImage3 ); overload;
59
       procedure CopyFrom( const Image_:TBitmap ); overload;
60
       procedure CopyTo( const Image_:TBitmap ); overload;
61
     end;
62

63
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvBitmap3
64

65
     TocvBitmap3 = class( TocvImage3 )
66
     private
67
     protected
68
       ///// アクセス
69
       procedure SetCore( const Core_:pIplImage ); override;
70
     public
71
       constructor Create( const Width_,Height_:Integer );
72
       destructor Destroy; override;
73
     end;
74

75
     //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvBitmap4
76

77
     TocvBitmap4 = class( TocvImage4 )
78
     private
79
     protected
80
       ///// アクセス
81
       procedure SetCore( const Core_:pIplImage ); override;
82
     public
83
       constructor Create( const Width_,Height_:Integer );
84
       destructor Destroy; override;
85
     end;
86

87
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
88

89
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
90

91
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
92

93
implementation //############################################################### ■
94

95
uses ocv.imgproc_c, ocv.imgproc.types_c;
96

97
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
98

99
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
100

101
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvImage
102

103
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
104

105
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
106

107
/////////////////////////////////////////////////////////////////////// アクセス
108

109
procedure TocvImage.SetCore( const Core_:pIplImage );
110
begin
111
     _Core := Core_;
112
end;
113

114
function TocvImage.GetWidth :Integer;
115
begin
116
     Result := _Core.width;
117
end;
118

119
function TocvImage.GetHeight :Integer;
120
begin
121
     Result := _Core.height;
122
end;
123

124
function TocvImage.GetChannelN :Integer;
125
begin
126
     Result := _Core.nChannels;
127
end;
128

129
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
130

131
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvImage3
132

133
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
134

135
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
136

137
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
138

139
/////////////////////////////////////////////////////////////////////// メソッド
140

141
procedure TocvImage3.CopyFrom( const Image_:TocvImage4 );
142
begin
143
     cvCvtColor( Image_.Core, _Core, CV_BGRA2BGR );
144
end;
145

146
procedure TocvImage3.CopyTo( const Image_:TocvImage4 );
147
begin
148
     cvCvtColor( _Core, Image_.Core, CV_BGR2BGRA );
149
end;
150

151
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvImage4
152

153
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
154

155
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
156

157
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
158

159
/////////////////////////////////////////////////////////////////////// メソッド
160

161
procedure TocvImage4.CopyFrom( const Image_:TocvImage3 );
162
begin
163
     cvCvtColor( Image_.Core, _Core, CV_BGR2BGRA );
164
end;
165

166
procedure TocvImage4.CopyTo( const Image_:TocvImage3 );
167
begin
168
     cvCvtColor( _Core, Image_.Core, CV_BGRA2BGR );
169
end;
170

171
procedure TocvImage4.CopyFrom( const Image_:TBitmap );
172
var
173
   D :TBitmapData;
174
begin
175
     with Image_ do
176
     begin
177
          Map( TMapAccess.Read, D );
178

179
          with _Core^ do Move( D.Data^, ImageData^, ImageSize );
180

181
          Unmap( D );
182
     end;
183
end;
184

185
procedure TocvImage4.CopyTo( const Image_:TBitmap );
186
var
187
   D :TBitmapData;
188
begin
189
     with Image_ do
190
     begin
191
          Map( TMapAccess.Write, D );
192

193
          with _Core^ do Move( imageData^, D.Data^, ImageSize );
194

195
          Unmap( D );
196
     end;
197
end;
198

199
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvBitmap3
200

201
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
202

203
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
204

205
/////////////////////////////////////////////////////////////////////// アクセス
206

207
procedure TocvBitmap3.SetCore( const Core_:pIplImage );
208
begin
209
     cvReleaseImage( _Core );
210

211
     _Core := Core_;
212
end;
213

214
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
215

216
constructor TocvBitmap3.Create( const Width_,Height_:Integer );
217
begin
218
     inherited Create;
219

220
     _Core := cvCreateImage( cvSize( Width_, Height_ ), IPL_DEPTH_8U, 3 );
221
end;
222

223
destructor TocvBitmap3.Destroy;
224
begin
225
     cvReleaseImage( _Core );
226

227
     inherited;
228
end;
229

230
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TocvBitmap4
231

232
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
233

234
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
235

236
/////////////////////////////////////////////////////////////////////// アクセス
237

238
procedure TocvBitmap4.SetCore( const Core_:pIplImage );
239
begin
240
     cvReleaseImage( _Core );
241

242
     _Core := Core_;
243
end;
244

245
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
246

247
constructor TocvBitmap4.Create( const Width_,Height_:Integer );
248
begin
249
     inherited Create;
250

251
     _Core := cvCreateImage( cvSize( Width_, Height_ ), IPL_DEPTH_8U, 4 );
252
end;
253

254
destructor TocvBitmap4.Destroy;
255
begin
256
     cvReleaseImage( _Core );
257

258
     inherited;
259
end;
260

261
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
262

263
//############################################################################## □
264

265
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
266

267
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
268

269
end. //######################################################################### ■
270

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.