如何在OpenCV中将BufferedImage转换为Mat?我使用java包装器的OpenCV(而不是JavaCV).由于我是OpenCV的新手,我在理解Mat的工作方式时遇到了一些问题.
我想做这样的事情.(根据Ted W.回复):
BufferedImage image = ImageIO.read(b.getClass().getResource("Lena.png"));
int rows = image.getWidth();
int cols = image.getHeight();
int type = CvType.CV_16UC1;
Mat newMat = new Mat(rows,cols,type);
for(int r=0; r<rows; r++){
for(int c=0; c<cols; c++){
newMat.put(r, c, image.getRGB(r, c));
}
}
Highgui.imwrite("Lena_copy.png",newMat);
Run Code Online (Sandbox Code Playgroud)
这不起作用."Lena_copy.png"只是一张尺寸正确的黑色照片.
我尝试了很多常量值,但我找不到cvtype值之间的任何差异.它是干什么用的?我试过像CV_8UC4
和的价值观CV_16S
.我在参考文献中没有找到这些信息.