2013-05-11 12 views
25

Przepraszam, jeśli zadaję głupie pytanie, staram się nauczyć openCV przy użyciu kompilacji Java. W próbkach opencv znalazłem tam metodę imshow w C++ lub showImage w Pythonie, ale szukam w OpenCv Java API, nie mogę znaleźć metody imshow.Równoważna metoda dla pokazu w opencv Java build

Jaka jest równa metoda imshow() i waitKey() w opencv z kompilacją Java?

Odpowiedz

8

Nie ma jeszcze opakowania Java highgui (link). Powinieneś użyć swing lub swt, aby pokazać obraz. Zobacz: Opencv java - Load image to GUI

+0

wielkie dzięki za odpowiedź, co powiesz na metodę waitKey? czy to samo z thread.sleep? – Orochi

+0

nie potrzebujesz tego właściwie ... – ArtemStorozhuk

+0

Widzę, ermm, jeszcze jedno, czy wiesz, jak uruchomić kamerę internetową i uzyskać dostęp do niej na żywo. Chodzi mi o to, że jak na razie udaje mi się uchwycić moją twarz za pomocą kamery internetowej i wykryć ją. Teraz chcę otworzyć moją kamerę i wykryć moją twarz bez jej przechwytywania. To coś takiego http://www.youtube.com/watch? v = HTk_UwAYzVk – Orochi

26
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(); 
    } 
} 
+0

Nie ma już modułu 'HighGUI' w Javie dla 3.0 już się używa' Imgcodecs' insead –

1

zrobiłem coś z huśtawką i AWT.

Najpierw dostać BufferedImage z Mat img przez imencode i ImageIo.read

 MatOfByte mMatOfByte = new MatOfByte() 
     imencode(".png", img, mMatOfByte); 
     byte[] byteArray = mMatOfByte.toArray(); 
     InputStream in = new ByteArrayInputStream(byteArray); 
     BufferedImage srcImage = ImageIO.read(in); 

drugie, zmień go na cel rozmiar szerokość i wysokość (w, h) i używać Rendering wskazówka, aby uzyskać czysty obraz w rozbudowę lub zmniejszenie sprawę .

  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); 

użyłem cel bufImage w paintComponent() metody JPanel za.

Dla waitKey() użyłem KeyEventDispatcher.

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić w nim istotne części odpowiedzi i podać odnośnik. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/18294231) –

+0

Dziękuję za recenzję Toma Arandy. Przepisuję swoje treści. –

+0

To znacząca poprawa. :) –

Powiązane problemy