1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-24 21:03:03 +04:00

221 Commits

Author SHA1 Message Date
Alexander Smorkalov c03734475f Merge pull request #28159 from asmorkalov:as/java_cleaners
Introduce option to generate Java code with finalize() or Cleaners interface #28159
 
Closes https://github.com/opencv/opencv/issues/22260
Replaces https://github.com/opencv/opencv/pull/23467

The PR introduce configuration option to generate Java code with Cleaner interface for Java 9+ and old-fashion finalize() method for old Java and Android. Mat class and derivatives are manually written. The PR introduce 2 base classes for it depending on the generator configuration.

Pros:
1. No need to implement complex and error prone cleaner on library side.
2. No new CMake templates, easier to modify code in IDE.

Cons:
1. More generator branches and different code for modern desktop and Android.

TODO: 
- [x] Add Java version check to cmake
- [x] Use Cleaners for ANDROID API 33+

### Pull Request Readiness Checklist

See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request

- [x] I agree to contribute to the project under Apache 2 License.
- [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV
- [ ] The PR is proposed to the proper branch
- [ ] There is a reference to the original bug report and related work
- [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable
      Patch to opencv_extra has the same branch name.
- [ ] The feature is well documented and sample code can be built with the project CMake
2025-12-16 14:21:34 +03:00
utibenkei 81b66cf972 Add Java wrapper support for List<List<MatShape>>
- Added vector_MatShape and vector_vector_MatShape to gen_dict.json
- Implemented MatShape_to_vector_MatShape, vector_MatShape_to_MatShape, MatShape_to_vector_vector_MatShape, and vector_vector_MatShape_to_MatShape conversion functions in dnn_converters.h/cpp and Converters.java
- Added testGetLayersShapes test to verify List<List<MatShape>> conversion
2025-08-25 02:09:19 +09:00
utibenkei fb68223b5c Add Java wrapper support for List<List<Mat>>
- Added vector_vector_Mat to gen_dict.json
- Implemented Mat_to_vector_vector_Mat and vector_vector_Mat_to_Mat conversion functions in converters.h/cpp and Converters.java
- Added DnnForwardAndRetrieve.java test to verify List<List<Mat>> conversion : Reference: C++ test in modules/dnn/test/test_misc.cpp - TEST(Net, forwardAndRetrieve)
2025-08-23 04:57:34 +09:00
Giles Payne 19a880bb91 Simple matrix multiplication for Mat in iOS/Android 2021-10-05 20:16:06 +09:00
Alexander Alekhin e0265c67c6 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2021-02-27 17:41:57 +00:00
Giles Payne 5cf08b0722 Fix/optimize Android put/get functions 2021-02-19 17:10:11 +09:00
Alexander Alekhin 593af7287b Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2020-05-18 17:50:16 +00:00
Nicolas Roduit 400a781ebf Prefer addall instead of iteration for performance 2020-05-14 11:42:24 +03:00
Alexander Alekhin 560f85f8e5 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2020-01-28 14:26:57 +03:00
Alexander Alekhin 80c4cedd25 android: use .getRowStride() in JavaCamera2View 2019-10-28 18:45:56 +00:00
Jan Starzynski e9ed7eb68d make -fvisibility=hidden work with java 1.7 2019-06-13 17:39:10 +02:00
Ahmed Ashour f3319f6140 java: remove redundant declaration of java.lang package 2019-05-23 14:06:34 +02:00
Giles Payne 11dbd86aa3 Merge pull request #13956 from komakai:java-mat-class-improvements
* Expose more C++ functionality in the Java wrapper of the Mat class
In particular expose methods for handling Mat with more than 2 dimensions
* add constructors taking an array of dimension sizes
* add constructor taking an existing Mat and an array of Ranges
* add override of the create method taking an array of dimension sizes
* add overrides of the ones and zeros methods taking an array of dimension sizes
* add override of the submat method taking an array of ranges
* add overrides of put and get taking arrays of indices
* add wrapper for copySize method
* fix crash in the JNI wrapper of the reshape(int cn, int[] newshape) method
* add test for each method added to Mat.java

* Fix broken test
2019-03-10 00:11:04 +03:00
berak eaee63d96b java: add converters, tests for MatOfRotatedRect 2018-11-06 16:40:56 +01:00
Vadim Pisarevsky d9b8a9d90e Merge pull request #13013 from berak:java_MatOfRotatedRect 2018-11-02 12:36:06 +00:00
berak 0cd14e3fb4 java: add support for MatOfRotatedRect 2018-11-01 15:37:23 +01:00
Dmitry Kurtaev 92f754c675 Add methods to reshape Mat in Java by array of shapes and retreive sizes of each dimension. 2018-10-25 10:48:23 +03:00
Hamdi Sahloul a39e0daacf Utilize CV_UNUSED macro 2018-09-07 20:33:52 +09:00
berak 72f422c7dc java: fix LIST_GET macro 2018-08-30 13:06:02 +02:00
luz.paz d05714995c Misc. modules/ cont. pt2
Found via `codespell`
2018-02-13 11:28:11 -05:00
Alexander Alekhin 8533b45ce9 cmake: Java/Android SDK refactoring 2018-01-13 02:12:39 +00:00
Alexander Alekhin 0cad2d2a83 java: files rename
intermediate commit (to simplify code review)
2018-01-12 19:14:00 +00:00
SarenT c6d9ce8fd3 Merge pull request #10489 from SarenT:offset-mat_put
Adding capability to parse subsections of a byte array in Java bindings (#10489)

* Adding capability to parse subsections of a byte array in Java bindings. (Because Java lacks pointers. Therefore, reading images within a subsection of a byte array is impossible by Java's nature and limitations. Because of this, many IO functions in Java require additional parameters offset and length to define, which section of an array to be read.)

* Corrected according to the review. Previous interfaces were restored, instead internal interfaces were modified to provide subsampling of java byte arrays.

* Adding tests and test related files.

* Adding missing files for the test.

* Simplified the test

* Check was corrected according to discussion. An OutOfRangeException will be thrown instead of returning.

* java: update MatOfByte implementation checks / tests
2018-01-12 18:00:58 +03:00
Moshe 84596bff09 Bitwise "and false"
Bitwise "and false" is always false.
2018-01-07 10:12:53 +02:00
Alexander Alekhin cac4a7e5b5 OpenCV version++
OpenCV 3.4.0-rc
2017-12-16 01:30:43 +03:00
Florian Echtler 2e772510ea Merge pull request #10050 from floe/android-studio-3.3.1
Add Android Mat constructor with support for native buffer (#10050)
2017-11-10 19:35:32 +00:00
Alexander Alekhin 01519313d7 dnn: invalid bindings 2017-08-31 19:35:48 +03:00
Aleksandr Rybnikov 8b1146deb2 Added function to get timings for layers 2017-08-23 13:40:05 +03:00
Alexander Alekhin 2360291c3e java: update source files processing, maven stuff 2017-07-19 22:39:23 +03:00
likan999 74127d44d0 More accurate condition to detect emulator
Previous commit, 6f39f9a, tries to fix the color issue for emulator. But the condition for detecting emulator is incomplete, e.g. it stops working for emulators using Google Play, whose Build.BRAND=="google". https://stackoverflow.com/a/21505193 shows a more accurate condition for this.
2017-06-22 00:47:15 -07:00
abratchik 037d8fbdcd Refactor OpenCV Java Wrapping 2017-06-15 20:35:12 +04:00
Kerry Billingham d9231afa29 Changes made to the Maven build process:
* Introduced OSGi Blueprint XML file and Bean class too automatically load the native library.

* Introduced integration testing module to deploy to Karaf OSGi implementation.

* Clears library executable stack flag during build.

* Updated README document.
2017-03-18 10:49:02 +00:00
Kuan-Yi Li e685dcef0b Fix typos 2017-03-07 23:42:24 +08:00
Philipp Hasper ec38ef9b10 CameraBridgeViewBase synchronizes on a final field
Synchronizing against non-final fields is advised against.
2017-03-03 16:07:10 +01:00
Jose Gómez 6f39f9a6a0 Merge pull request #8168 from jmgomezpoveda:issue_8166
* Use the YV12 format in the Android emulator to avoid image issues

* Removed trailing spaces

* Added exception in else case

* Removed tab
2017-03-03 13:44:11 +00:00
utibenkei 579ffbf97e Added Java wrapping for tracking module 2016-12-31 02:19:38 +09:00
Alexander Alekhin d85c11e525 OpenCV version++
3.2.0-rc
2016-12-19 17:12:18 +03:00
Alexander Alekhin f9ab93bf0f Merge pull request #6876 from janstarzy:jni-as-template-redone 2016-07-11 13:06:00 +00:00
Jan Starzynski 479f933970 get/put: more type-safety and code unification using templates 2016-07-11 09:27:59 +02:00
Philipp Hasper cc7a1a2ab7 Deactivated two noisy camera-retrieval log messages in android
They were issued for every frame retrieved - even in a release build.
2016-04-13 09:17:33 +02:00
Maksim Shabunin 92387b1ef8 Fix java version++ 2015-12-18 18:02:16 +03:00
Maksim Shabunin 8d1f5b5490 Version++ for android 2015-12-18 17:57:07 +03:00
Maksim Shabunin 6e9d0d9a0c Visual Studio 2015 warning and test fixes 2015-10-20 12:48:37 +03:00
Alexander Alekhin 441eeef319 Merge pull request #5470 from apavlenko:android_camera_gl_view 2015-10-08 13:31:51 +00:00
Andrey Pavlenko 23fea91e84 minor fixes 2015-10-08 12:37:59 +03:00
Andrey Pavlenko 15db8243ef refactored; added Camera2, notify callbacks, front/back maxCamera sizes; disable new stuff if target API < 21 2015-10-07 15:01:32 +03:00
Alexander Alekhin 33f5ac5c15 Merge pull request #5429 from PhilLab:patch-6 2015-10-05 12:50:17 +00:00
Philipp Hasper 05846438e3 Typo in CameraBridgeViewBase.java
Corrected typo and unused imports
2015-10-01 15:09:14 +02:00
Alexander Alekhin eb2e061e3f fix Android camera datarace (mCameraFrameReady) 2015-09-22 17:03:09 +03:00
Andrey Pavlenko 8e088d38a5 draft implementation of alternative CameraBridge via GLES
a simple sample will look like:

```java
public class MainActivity extends Activity implements CameraGLSurfaceView.CameraTextureListener {

	CameraGLSurfaceView mView;
	ByteBuffer buf;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        mView = new CameraGLSurfaceView(this, null);
        mView.setCameraTextureListener(this);
        setContentView(mView);
        buf = ByteBuffer.allocateDirect(1920*1080*4);
    }

    @Override
    protected void onPause() {
        mView.onPause();
        super.onPause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mView.onResume();
    }

	@Override
	public void onCameraViewStarted(int width, int height) {
		// TODO Auto-generated method stub

	}

	@Override
	public void onCameraViewStopped() {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean onCameraFrame(int texIn, int texOut, int width, int height) {
		Log.i("MAIN", "onCameraFrame");
		int w=width, h=height;
		/*
		// option 1:
		// just return 'false' to display texIn on screen
		retutn false;
		*/

		/*
		// option 2:
		// fast copy texIn to texOut
		GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
    	GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texOut);
		GLES20.glCopyTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 0, 0, w, h, 0);
		return true;
		*/

		// option 3:
		// read, modify and write back pixels
		GLES20.glReadPixels(0, 0, w, h, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buf);

		buf.rewind();
		// red line
		for(int i=0; i<h; i++) {
			buf.position(w*4*i+i*4);
			buf.put((byte) -1);
			buf.position(w*4*i+i*4+4);
			buf.put((byte) -1);
		}
		buf.rewind();

		GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
    	GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texOut);
		GLES20.glTexSubImage2D(GLES20.GL_TEXTURE_2D, 0, 0, 0, w, h, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buf);
		return true;
	}
}
```
2015-09-19 16:18:02 +03:00