Форум программистов, компьютерный форум CyberForum.ru

Видимость экземпляра класса внутри класса - C++

Восстановить пароль Регистрация
 
Marcosko
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 4
30.06.2015, 13:49     Видимость экземпляра класса внутри класса #1
Здравствуйте! Пытаюсь вывести openCV видео в QT виджете. На данный момент в слоте обновления картинки инициализирую класс cv::VideoCapture cap(0); это совсем не лучшее решение и скорее всего из за него количество кадров в секунду очень низкое.
Как инициализировать этот класс единожды, что бы он был виден в классе отвечающем за конвертацию и отображения картинки?
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "mainwindow.h"
#include <QImage>
#include <QLabel>
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgproc/types_c.h"
#include <QPushButton>
#include <QVBoxLayout>
 
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
 
  cv::VideoCapture cap(0);
  timer = new QTimer(this);
  connect(timer, SIGNAL(timeout()), this, SLOT(UpDateImage(cap)));
  timer->start(20);
}
 
MainWindow::~MainWindow()
{
}
 
void MainWindow::UpDateImage()
{
    cv::VideoCapture cap(0);
    myLabel = new QLabel;
    cv::Mat temp;
    cv::Mat frame;
    setCentralWidget(myLabel);
    cap >> frame;
    cvtColor(frame, temp,CV_BGR2RGB);
    QImage image((const uchar *) temp.data, temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
    image.bits();
    myLabel->setPixmap(QPixmap::fromImage( image ));
}
mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QLabel>
#include "opencv2/opencv.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgproc/types_c.h"
#include <QPushButton>
#include <QTimer>
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void UpDateImage();
 
private:
 
    QLabel *myLabel;
    QTimer *timer;
 
 
};
 
#endif // MAINWINDOW_H
Если делаю так:
C++ (Qt)
1
2
3
4
5
6
7
private:
 
    QLabel *myLabel;
    QTimer *timer;
    cv::VideoCapture *cap;
 
};
то не дает передать классу id камеры и возникает проблема в строке
cap >> frame;
если же пытаюсь сделать вот так:
C++ (Qt)
1
2
3
4
class MainWindow : public QMainWindow
{
    Q_OBJECT
cv::VideoCapture *cap;}
то так же не могу передать аргумент классу
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2015, 13:49     Видимость экземпляра класса внутри класса
Посмотрите здесь:

C++ Видимость констант из глобальной области внутри класса
C++ Вызов метода класса без создания экземпляра класса.
Имя экземпляра объекта внутри класса на С++ C++
C++ Как построить экземпляр дочернего класса на основе готового экземпляра базового класса?
Явное создание экземпляра класса и явная специализация шаблона класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
30.06.2015, 14:20     Видимость экземпляра класса внутри класса #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Marcosko Посмотреть сообщение
то не дает передать классу id камеры
Кто не даёт? Инициализируй указатель в конструкторе класса:
C++
1
cap = new cv::VideoCapture(0);
Цитата Сообщение от Marcosko Посмотреть сообщение
и возникает проблема в строке
C++
1
cap >> frame;
C++
1
(*cap) >> frame;
Marcosko
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 4
30.06.2015, 14:54  [ТС]     Видимость экземпляра класса внутри класса #3
Огромное спасибо! Это помогло, не могли бы вы подсказать что я сделал и где про это почитать?
lss
919 / 849 / 281
Регистрация: 10.10.2012
Сообщений: 2,701
30.06.2015, 22:24     Видимость экземпляра класса внутри класса #4
Цитата Сообщение от Marcosko Посмотреть сообщение
что я сделал и где про это почитать?
Это о чём?
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2139 / 972 / 223
Регистрация: 30.11.2013
Сообщений: 3,241
30.06.2015, 22:46     Видимость экземпляра класса внутри класса #5
Цитата Сообщение от Marcosko Посмотреть сообщение
не могли бы вы подсказать что я сделал и где про это почитать
неплохо вы код пишите, что не понимаете, что пишете

Yandex
Объявления
30.06.2015, 22:46     Видимость экземпляра класса внутри класса
Ответ Создать тему
Опции темы

Текущее время: 13:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru