Comments (4)
We could use some more documentation, obviously :) If you are ever willing to provide some material, please do contribute to the code, the README file or the wiki. Thanks!
So, I'm guessing what you need is the following:
native void foo(@ByRef @Cast("cv::Mat*") Pointer image)
Another way would be to use the Parser
, that usually generates an appropriate Java interface by default, but this isn't a straightforward case, so maybe not.
from javacpp.
Thanks, I think that makes sense to me. I agree that I should use the Parser
, but I wanted to understand the code that it generates a bit more before going into that. I did run into an issue where I wasn't easily able to do the same thing by passing a std::vector<cv::Mat*>
by reference instead of by pointer. I've included one solution that seems to work. Can you take a look and point out anything that's incorrect or could be done in a better way in this code? I tried using the @StdVector
annotation, but couldn't get it to work for my MatPointer
.
import org.bytedeco.javacpp.*;
import org.bytedeco.javacpp.annotation.*;
import org.opencv.core.Mat;
@Platform(include={"<vector>", "<opencv2/opencv.hpp>"})
public class cv {
@Name("std::vector<cv::Mat*>")
public static class MatVector extends Pointer {
static { Loader.load(); }
public MatVector() { allocate(); }
public MatVector(long n) { allocate(n); }
public MatVector(Pointer p) { super(p); }
public MatVector(Mat[] mats) {
this();
for (int i = 0; i < mats.length; ++i) {
Mat mat = mats[i];
MatPointer newMat = new MatPointer(mat);
push_back(newMat);
}
}
private native void allocate();
private native void allocate(long n);
private native void push_back(MatPointer pointer);
}
@Name("cv::Mat")
public static class MatPointer extends Pointer {
static { Loader.load(); }
public MatPointer() { allocate(); }
public MatPointer(Pointer p) { super(p); }
public MatPointer(Mat m) {
this();
mat = m;
address = mat.getNativeObjAddr();
limit = 1;
capacity = 1;
position = 0;
}
// MatPointer does not take ownership of the native object owned by Mat.
@NoDeallocator
private native void allocate();
// Keep a reference to the Java object to prevent the native object
// from being deallocated.
private Mat mat;
}
}
from javacpp.
This is getting complicated... What you're doing seems fine though.
BTW, why not use the opencv module from javacpp-presets? What's missing?
from javacpp.
So, I'm assuming everything is working out well enough, but let me know if you still have some issues, thanks!
from javacpp.
Related Issues (20)
- Optional pair HOT 2
- ParserException for valid c++ code HOT 1
- Function pointer returning shared_ptr HOT 10
- LNK2001: Unresolved external, issue with namespace? HOT 7
- infinite recursion when calling virtualized inherited function HOT 4
- Mapping Template Constraints, Parser Error HOT 5
- Parser cannot compile because of QT HOT 4
- Template class with template functions HOT 15
- Inadequate Error Handling HOT 1
- `@StdVector` default annotation causing `Parser` to ignore templated constructors and operator overloads with `std::vector` arguments HOT 10
- Crash when passing a unique_ptr by value HOT 12
- Potential class loading deadlock when call static methods of Loader or Pointer HOT 13
- Multiple pointer types and automatic generation of function overloads HOT 1
- Parser doesn't add @Virtual annotations HOT 2
- A question about garbage collection on native objects HOT 3
- Pointer types don't work on the native side if allocated in java HOT 16
- Missing dependencies reported by gradle HOT 1
- Not found libs based on x86 in 1.5.10 HOT 4
- Marking an interface with virtualize() causes compilation failure when returning byte array
- Panama HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from javacpp.