Ответ 1
Пока нет оболочки Java highgui (ссылка). Вы должны использовать swing или swt для отображения изображения. Смотрите: Opencv java - Загрузить изображение в графический интерфейс
Извините, если я задаю глупый вопрос, я пытаюсь изучить openCV с помощью Java build. В образцах opencv, которые я нашел, есть метод imshow в С++ или showImage в python, но я ищу в opencv Java API, я не могу найти метод imshow.
Каков равный метод imshow() и waitKey() в opencv с Java build?
Пока нет оболочки Java highgui (ссылка). Вы должны использовать swing или swt для отображения изображения. Смотрите: Opencv java - Загрузить изображение в графический интерфейс
public static void showResult(Mat img) {
Imgproc.resize(img, img, new Size(640, 480));
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);
} catch (Exception e) {
e.printStackTrace();
}
}
Это готовое решение для эквивалента Imshow() в Java OpenCV Его прост в использовании. API будет выглядеть так:
Imshow im = new Imshow ( "Название" );
im.showImage(matimage);
Посетите здесь https://github.com/master-atul/ImShow-Java-OpenCV
вам нужно использовать java swings или awt для отображения изображений. Посмотрите на текущий код http://projectimageprocessing.blogspot.in/2013/05/introduction.html
Я сделал что-то с качелями и awt.
Сначала получите BufferedImage
из Mat img imencode
и ImageIo.read
MatOfByte mMatOfByte = new MatOfByte()
imencode(".png", img, mMatOfByte);
byte[] byteArray = mMatOfByte.toArray();
InputStream in = new ByteArrayInputStream(byteArray);
BufferedImage srcImage = ImageIO.read(in);
Во-вторых, измените его на ширину и высоту целевого размера (w, h) и используйте Rendering Hint для получения чистого изображения при расширении или уменьшении случаев.
bufImage = new BufferedImage(w, h, srcImage.getType());
Graphics2D g = bufImage.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(srcImage, 0,0, w, h, 0, 0, srcImage.getWidth(), srcImage.getHeight(), null);
Я использовал цель bufImage
в методе JPanel paintComponent()
.
Для waitKey()
я использовал KeyEventDispatcher
.