Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> От CanvasFrame к JPanel. BufferedImage, RTSP поток 
:(
    Опции темы
trump42
  Дата 30.7.2012, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.3.2012

Репутация: нет
Всего: нет



Здравствуйте. 
Вообщем идейка такая: могу получать 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
}


PM MAIL   Вверх
dorogoyIV
Дата 30.7.2012, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 36
Всего: 46



Цитата(trump42 @  30.7.2012,  09:53 Найти цитируемый пост)
Добрые люди советовали использовать

это кто ж такой добрый то?
ну раз у тебя есть BufferedImage, зачем лезть в ImageIcon?
наверняка должны быть другие способы показа изображений в этой библиотеке...
я с ней не работал, и не знаю, поэтому утверждать не буду...
PM MAIL   Вверх
trump42
Дата 30.7.2012, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 3.3.2012

Репутация: нет
Всего: нет



Я не сильно разбираюсь, но вот реально рабочий пример и подсказали, что через буферимаг можно мутануть, Так вот интересует как развести 4 буферимага на одном JPanel
PM MAIL   Вверх
aleksandy
Дата 10.9.2012, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 1
Всего: 5



Панели ставишь GridLayout(2, 2), добавляешь на эту панель 4 других, на которых и будет выполняться отрисовка
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0902 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.