Здравствуйте. Вообщем идейка такая: могу получать rtsp поток (телевизор) и выводить его на экран в виде CanvasFrame, но не имею возможности от руки рисовать интерфейс. Было бы круто сделать JPanel вместо CanvasFrame и выводить сразу 4 телека на экран. Конечно предполагается, что за каждый телек будет отвечать свой поток. Планирую в дальнейшем научиться записывать видео и может чего распознавать, поэтому пользуюсь библиотекой JavaCV. Добрые люди советовали использовать: jLabel1.setIcon(new ImageIcon( originalImage.getBufferedImage() )); да что-то как-то не вяжется. Сам новичок в Java поэтому есть некоторые казусы с которыми я проваливаюсь в Ступр. Помогите! Код работающего вывода окна: Код | package javacvproject;
import static com.googlecode.javacv.cpp.opencv_core.CV_AA; import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_8U; import static com.googlecode.javacv.cpp.opencv_core.cvGetSeqElem; import static com.googlecode.javacv.cpp.opencv_core.cvLoad; import static com.googlecode.javacv.cpp.opencv_core.cvPoint; import static com.googlecode.javacv.cpp.opencv_core.cvRectangle; import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImage; import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage; import static com.googlecode.javacv.cpp.opencv_imgproc.CV_BGR2GRAY; import static com.googlecode.javacv.cpp.opencv_imgproc.cvCvtColor; import static com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects; import com.googlecode.javacv.cpp.opencv_core.CvMemStorage; import com.googlecode.javacv.cpp.opencv_core.CvRect; import com.googlecode.javacv.cpp.opencv_core.CvScalar; import com.googlecode.javacv.cpp.opencv_core.CvSeq; import com.googlecode.javacv.cpp.opencv_core.IplImage; import com.googlecode.javacv.cpp.opencv_objdetect.CvHaarClassifierCascade;
import com.googlecode.javacpp.Loader; import com.googlecode.javacv.*; import static com.googlecode.javacv.cpp.opencv_core.*; import static com.googlecode.javacv.cpp.opencv_imgproc.*; import static com.googlecode.javacv.cpp.opencv_calib3d.*; import com.googlecode.javacv.cpp.opencv_highgui; import static com.googlecode.javacv.cpp.opencv_objdetect.*;
public class FaceRTSP {
public static void main(String[] args) throws Exception { /* * rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_4.sdp –aajtak rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_2.sdp - times now rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_7.sdp -headlines today rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_29.sdp -ndtv 24*7 rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_31.sdp - ndtv profit rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_32.sdp - ndtv goodtimes rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_33.sdp - ndtv india rtsp://ss1c6.idc.mundu.tv:554/prf1/cid_34.sdp -cnbc awaaz rtsp://ss1c6.idc.mundu.tv:554/prf0/cid_35.sdp - cnbc Tv18 rtsp://121.244.145.226:554/prf0/cid_45.sdp - zee business rtsp://121.244.145.226:554/prf0/cid_38.sdp - zee marathi rtsp://121.244.145.226:554/prf0/cid_41.sdp -zee tv rtsp://121.244.145.226:554/prf0/cid_50.sdp - zee regional rtsp://121.244.145.226:554/prf0/cid_52.sdp - zee regional rtsp://121.244.145.226:554/prf0/cid_54.sdp - zee regional rtsp://121.244.145.226:554/prf0/cid_55.sdp - zee regional rtsp://121.244.145.226:554/prf0/cid_61.sdp - ten action rtsp://121.244.145.226:554/prf0/cid_62.sdp - etc rtsp://121.244.145.226:554/prf0/cid_56.sdp - zing rtsp://121.244.145.226:554/prf0/cid_57.sdp -zee classic rtsp://121.244.145.226:554/prf0/cid_58.sdp zee smile */ //rtsp://62.149.26.237:1935/tv/_definst_/ntn //rtsp://62.149.26.237:1935/tv/_definst_/k1 //rtsp://iptv.karelia.ru/ort.sdp OpenCVFrameGrabber grabber = new OpenCVFrameGrabber("rtsp://62.149.26.237:1935/tv/_definst_/inter"); grabber.start();
IplImage image = grabber.grab();
CanvasFrame canvasFrame = new CanvasFrame("Web Cam Detection Going on"); canvasFrame.setCanvasSize(image.width(), image.height()); canvasFrame.setDefaultCloseOperation(CanvasFrame.EXIT_ON_CLOSE); while (true) { IplImage originalImage = grabber.grab(); canvasFrame.showImage(originalImage); }
}
}
|
Мои эксперименты: Код | /* * To change this template, choose Tools | Templates * and open the template in the editor. */
import static com.googlecode.javacv.cpp.opencv_core.CV_AA; import static com.googlecode.javacv.cpp.opencv_core.IPL_DEPTH_8U; import static com.googlecode.javacv.cpp.opencv_core.cvGetSeqElem; import static com.googlecode.javacv.cpp.opencv_core.cvLoad; import static com.googlecode.javacv.cpp.opencv_core.cvPoint; import static com.googlecode.javacv.cpp.opencv_core.cvRectangle; import static com.googlecode.javacv.cpp.opencv_highgui.cvLoadImage; import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage; import static com.googlecode.javacv.cpp.opencv_imgproc.CV_BGR2GRAY; import static com.googlecode.javacv.cpp.opencv_imgproc.cvCvtColor; import static com.googlecode.javacv.cpp.opencv_objdetect.cvHaarDetectObjects; import com.googlecode.javacv.cpp.opencv_core.CvMemStorage; import com.googlecode.javacv.cpp.opencv_core.CvRect; import com.googlecode.javacv.cpp.opencv_core.CvScalar; import com.googlecode.javacv.cpp.opencv_core.CvSeq; import com.googlecode.javacv.cpp.opencv_core.IplImage; import com.googlecode.javacv.cpp.opencv_objdetect.CvHaarClassifierCascade;
import com.googlecode.javacpp.Loader; import com.googlecode.javacv.*; import com.googlecode.javacv.FrameGrabber.Exception; import static com.googlecode.javacv.cpp.opencv_core.*; import static com.googlecode.javacv.cpp.opencv_imgproc.*; import static com.googlecode.javacv.cpp.opencv_calib3d.*; import com.googlecode.javacv.cpp.opencv_highgui; import static com.googlecode.javacv.cpp.opencv_objdetect.*; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.ImageIcon; import javax.swing.JLabel; /** * * @author 7я */ public class ChPanel extends javax.swing.JPanel {
/** * Creates new form ChPanel */ public ChPanel() { initComponents(); }
/** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() {
jLabel1 = new javax.swing.JLabel(); jButton1 = new javax.swing.JButton();
jLabel1.setText("jLabel1");
jButton1.setText("jButton1"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } });
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 182, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addGap(131, 131, 131)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE) .addComponent(jButton1)) .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 278, Short.MAX_VALUE)) .addContainerGap()) ); }// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { OpenCVFrameGrabber grabber = new OpenCVFrameGrabber("rtsp://62.149.26.237:1935/tv/_definst_/inter"); grabber.start(); IplImage image = grabber.grab(); while (true) { IplImage originalImage = grabber.grab(); jLabel1.setIcon(new ImageIcon( originalImage.getBufferedImage() )); } } catch (Exception ex) { Logger.getLogger(ChPanel.class.getName()).log(Level.SEVERE, null, ex); } }
// Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; // End of variables declaration }
|
|