How to read/write from/to an array of CvMat (Java)? In the code below I put a CvMat to the array. But reading seems not to get the CvMat.
import com.googlecode.javacpp.Pointer;
import com.googlecode.javacv.cpp.opencv_core;
import static com.googlecode.javacv.cpp.opencv_core.CV_IS_MAT;
import com.googlecode.javacv.cpp.opencv_core.CvMat;
import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_32F;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_core.cvSize;
public class Ask {
public static void main(String[] args) {
new Ask().go();
}
private void go() {
CvMat matQ = new opencv_core.CvMat(3); //array of 3 CvMat
IplImage i = opencv_core.cvCreateImage(cvSize(10, 10), IPL_DEPTH_32F, 3); //just to have an image
CvMat x = i.asCvMat(); //a CvMat of the image
System.out.println(CV_IS_MAT(x)); //true, it's a mat
matQ.position(0).put(x); //store it to array at position 0
System.out.println(CV_IS_MAT(matQ.position(0))); //false!
System.out.println(CV_IS_MAT(matQ)); //also false
}
}
If you use Javacv(https://github.com/bytedeco/javacv) this is very easy task.
String img ="Image.jpg";
IplImage newImage0 = cvLoadImage(img);
//import static org.bytedeco.javacpp.opencv_core.IplImage;
or
Mat newImage1 = imread(img);
//import org.bytedeco.javacpp.opencv_core.Mat;
//import static org.bytedeco.javacpp.opencv_highgui.*;
If it is converted into CvMat type
CvMat imgcvMat0 = newImage0.asCvMat();
CvMat imgcvMat1 = new CvMat(newImage1);
//import org.bytedeco.javacpp.opencv_core.Mat;
same as you can convert it back to IplImage
imgcvMat0.asIplImage();
or
imgcvMat0.asBuffer();