mat opencv java_OpenCV Mat到JavaCV Mat转换
您可以使用java.awt.image.BufferedImage作为接口。
您org.opencv.core.Mat对象只是转换为java.awt.image.BufferedImage中再取结果对象将其转换为org.bytedeco.javacpp.opencv_core.Mat。
现在,这些都是你需要的功能:
1)转换org.opencv.core.Mat到java.awt.image.BufferedImage中:
public BufferedImage matToBufferedImage(Mat frame) {
int type = 0;
if (frame.channels() == 1) {
type = BufferedImage.TYPE_BYTE_GRAY;
} else if (frame.channels() == 3) {
type = BufferedImage.TYPE_3BYTE_BGR;
}
BufferedImage image = new BufferedImage(frame.width() ,frame.height(), type);
WritableRaster raster = image.getRaster();
DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer();
byte[] data = dataBuffer.getData();
frame.get(0, 0, data);
return image;
}
2)将Java。 awt.image.BufferedImage到org.bytedeco.javacpp.opencv_core.Mat:
public Mat bufferedImageToMat(BufferedImage bi) {
OpenCVFrameConverter.ToMat cv = new OpenCVFrameConverter.ToMat();
return cv.convertToMat(new Java2DFrameConverter().convert(bi));
}
确保拥有所有必要的罐子和进口。
你可以深入到JNI的东西,但对于测试用例,这应该是足够的。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
