我正在尝试为纹理特征提取实现MR8过滤器,我根据http://www.robots.ox.ac.uk/~vgg/research/texclass/filters.html上的Matlab代码进行了编码。现在我想在卷积后显示38过滤后的图像。在matlab中,图像显示为imshow(F(:,:,1),[])。
我怎么能用java opencv做同样的事?
答案 0 :(得分:0)
我使用它在Open Java中显示图像(在JFrame
中):
public static void ShowImage(Mat img, String title, Integer...locs) {
MatOfByte matOfByte = new MatOfByte();
Highgui.imencode(".jpg", img, matOfByte);
byte[] byteArray = matOfByte.toArray();
BufferedImage bufImage = null;
try {
InputStream in = new ByteArrayInputStream(byteArray);
bufImage = ImageIO.read(in);
JFrame frame = new JFrame();
frame.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle(title);
if ((locs != null) && (locs.length > 0)) {
frame.setLocation(locs[0], locs[1]);
} else {
frame.setLocation(START_X_LOC, START_Y_LOC);
}
} catch (Exception e) {
e.printStackTrace();
}
}
您只能使用图片Mat:
来调用它ShowImage(imgMat, null, null);
或者,您可以添加标题或位置:
int[] loc = {100,200};
ShowImage(imgMat, "Image", loc);
希望它有所帮助。
答案 1 :(得分:0)
这是一个现成的解决方案,适用于Java OpenCV中的Imshow()等效它易于使用。 API将如下所示:
Imshow im = new Imshow("Title");
im.showImage(matimage);