@@ -44,7 +44,6 @@ public abstract class OpenCVFrameConverter<F> extends FrameConverter<F> {
44
44
45
45
IplImage img ;
46
46
Mat mat ;
47
- org .opencv .core .Mat orgOpenCvCoreMat ;
48
47
49
48
public static class ToIplImage extends OpenCVFrameConverter <IplImage > {
50
49
@ Override public Frame convert (IplImage img ) { return super .convert (img ); }
@@ -56,11 +55,6 @@ public static class ToMat extends OpenCVFrameConverter<Mat> {
56
55
@ Override public Mat convert (Frame frame ) { return convertToMat (frame ); }
57
56
}
58
57
59
- public static class ToOrgOpenCvCoreMat extends OpenCVFrameConverter <org .opencv .core .Mat > {
60
- @ Override public Frame convert (org .opencv .core .Mat mat ) { return super .convert (mat ); }
61
- @ Override public org .opencv .core .Mat convert (Frame frame ) { return convertToOrgOpenCvCoreMat (frame ); }
62
- }
63
-
64
58
public static int getFrameDepth (int depth ) {
65
59
switch (depth ) {
66
60
case IPL_DEPTH_8U : case CV_8U : return Frame .DEPTH_UBYTE ;
@@ -175,64 +169,6 @@ public Frame convert(Mat mat) {
175
169
return frame ;
176
170
}
177
171
178
- static boolean isEqual (Frame frame , org .opencv .core .Mat mat ) {
179
- return mat != null && frame != null && frame .image != null && frame .image .length > 0
180
- && frame .imageWidth == mat .cols () && frame .imageHeight == mat .rows ()
181
- && frame .imageChannels == mat .channels () && getMatDepth (frame .imageDepth ) == mat .depth ()
182
- && new Pointer (frame .image [0 ].position (0 )).address () == mat .dataAddr ();
183
- }
184
- public org .opencv .core .Mat convertToOrgOpenCvCoreMat (Frame frame ) {
185
- if (frame == null || frame .image == null ) {
186
- return null ;
187
- } else if (frame .opaque instanceof org .opencv .core .Mat ) {
188
- return (org .opencv .core .Mat )frame .opaque ;
189
- } else if (!isEqual (frame , mat )) {
190
- int depth = getMatDepth (frame .imageDepth );
191
- orgOpenCvCoreMat = depth < 0 ? null : new org .opencv .core .Mat (frame .imageHeight , frame .imageWidth ,
192
- CV_MAKETYPE (depth , frame .imageChannels ), new BytePointer (new Pointer (frame .image [0 ].position (0 )))
193
- .capacity (frame .image [0 ].capacity () * Math .abs (frame .imageDepth ) / 8 ).asByteBuffer (),
194
- frame .imageStride * Math .abs (frame .imageDepth ) / 8 );
195
- }
196
- return orgOpenCvCoreMat ;
197
- }
198
- public Frame convert (final org .opencv .core .Mat mat ) {
199
- if (mat == null ) {
200
- return null ;
201
- } else if (!isEqual (frame , mat )) {
202
- frame = new Frame ();
203
- frame .imageWidth = mat .cols ();
204
- frame .imageHeight = mat .rows ();
205
- frame .imageDepth = getFrameDepth (mat .depth ());
206
- frame .imageChannels = mat .channels ();
207
- frame .imageStride = (int )mat .step1 ();
208
- ByteBuffer byteBuffer = new BytePointer () { { address = mat .dataAddr (); } }.capacity (mat .rows () * mat .step1 () * mat .elemSize1 ()).asByteBuffer ();
209
- switch (mat .depth ()) {
210
- case CV_8U :
211
- case CV_8S :
212
- frame .image = new Buffer [] { byteBuffer };
213
- break ;
214
- case CV_16U :
215
- case CV_16S :
216
- frame .image = new Buffer [] { byteBuffer .asShortBuffer () };
217
- break ;
218
- case CV_32F :
219
- frame .image = new Buffer [] { byteBuffer .asFloatBuffer () };
220
- break ;
221
- case CV_32S :
222
- frame .image = new Buffer [] { byteBuffer .asIntBuffer () };
223
- break ;
224
- case CV_64F :
225
- frame .image = new Buffer [] { byteBuffer .asDoubleBuffer () };
226
- break ;
227
- default :
228
- frame .image = null ;
229
- break ;
230
- }
231
- }
232
- frame .opaque = mat ;
233
- return frame ;
234
- }
235
-
236
172
@ Override public void close () {
237
173
super .close ();
238
174
if (img != null ) {
@@ -243,9 +179,5 @@ public Frame convert(final org.opencv.core.Mat mat) {
243
179
mat .releaseReference ();
244
180
mat = null ;
245
181
}
246
- if (orgOpenCvCoreMat != null ) {
247
- orgOpenCvCoreMat .release ();
248
- orgOpenCvCoreMat = null ;
249
- }
250
182
}
251
183
}
0 commit comments