我正在尝试在屏幕上显示来自摄像机的实时供稿,该摄像机将显示检测到的面部。 但是我不断得到:

QMetaObject::connectSlotsByName: No matching signal for On_actionCapture_triggered()

我没有使用GUI链接任何插槽或信号就对此进行了编码。 我不明白问题出在哪里。

程序运行,然后在“应用程序”输出框中显示错误。

关于问题出在哪里的任何见解将不胜感激。

.h文件是

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <opencv/cv.h>
#include <opencv/highgui.h>


namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();

private slots:
    void on_actionCapture_triggered();

private:
    Ui::Dialog* _ui;
    CvCapture*      _capture;
    IplImage*       _img;
    CvHaarClassifierCascade* _cascade;
    CvMemStorage*   _storage;
    QList<CvScalar>  _colors;
    QPixmap*         _pixmap;
    QTimer*          _timer;

};

cpp文件是:

#endif // DIALOG_H

#include "dialog.h"
#include "ui_dialog.h"
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include "opencv/cvaux.h"

#include <QTimer>


Dialog::Dialog(QWidget *parent) :
QDialog(parent),
_ui(new Ui::Dialog)
{
    _ui->setupUi(this);
    _capture = cvCaptureFromCAM( 0 );
    _cascade = (CvHaarClassifierCascade*)cvLoad("haarcascade_frontalface_alt2.xml");
    _storage = cvCreateMemStorage(0);

    _colors << cvScalar(0.0,0.0,255.0) << cvScalar(0.0,128.0,255.0)
            << cvScalar(0.0,255.0,255.0) << cvScalar(0.0,255.0,0.0)
            << cvScalar(255.0,128.0,0.0) << cvScalar(255.0,255.0,0.0)
            << cvScalar(255.0,0.0,0.0) << cvScalar(255.0,0.0,255.0);

    _timer = new QTimer(this);
    connect(_timer, SIGNAL(timeout()), this, SLOT(on_actionCapture_triggered()));
    _timer->start(10);
}

Dialog::~Dialog()
{
    cvReleaseImage(&_img);
    cvReleaseCapture(&_capture);
    delete _ui;
}

void Dialog::on_actionCapture_triggered()
{
    // Query camera for next frame
    _img = cvQueryFrame( _capture );

    if (_img)
    {
        // Detect objects
        cvClearMemStorage( _storage );

        CvSeq* objects = cvHaarDetectObjects(_img,
                                         _cascade,
                                         _storage,
                                         1.1,
                                         3,
                                         CV_HAAR_DO_CANNY_PRUNING,
                                         cvSize( 100, 100 ));

        int n = (objects ? objects->total : 0);

        CvRect* r;
        // Loop through objects and draw boxes
        for( int i = 0; i < n; i++ )
        {
            r = ( CvRect* )cvGetSeqElem( objects, i );
            cvRectangle( _img,
                         cvPoint( r->x, r->y ),
                         cvPoint( r->x + r->width, r->y + r->height ),
                         _colors[i%8]
                        );
        }

        // Convert IplImage to QImage
        QImage image = QImage((const uchar *)_img->imageData,
                              _img->width,
                              _img->height,
                              QImage::Format_RGB888).rgbSwapped();
        _pixmap = new QPixmap(QPixmap::fromImage(image));
        _ui->labelCapture->setPixmap(*_pixmap);
    }
}

#1楼 票数:0 已采纳

Qt自动连接机制尝试以以下形式将信号连接到对象的插槽:

void on_<object name>_<signal name>(<signal parameters>);

因此,在这里它尝试找到名称为actionCapture的对象,该对象的信号已triggered ,将其连接到插槽。 但是没有这样的事情,它会输出警告。

您应该将插槽名称更改为其他名称,以避免出现此警告。

  ask by Matthew Smith translate from so

未解决问题?本站智能推荐:

1回复

错误:没有用于调用“FaceDetector::FaceDetector(std::__cxx11::string)”的匹配函数

我是 C++ 的新手,我收到了类似的错误 我附上了我的代码和错误日志如何解决这个问题请指导我 我附上了我的错误日志。请任何人帮忙。 提前致谢错误: https : //i.stack.imgur.com/RZXXK.jpg
1回复

在Qt线程中未检测到信号和插槽

我正在Qt中创建一个简单的应用程序用于学习。 我想显示网络摄像头捕获的图像,以显示在用户界面(ui)的Graphicsview中。 功能:按下“ 开始”按钮时,网络摄像头框架开始显示在“图形视图”中。 当按下“ 暂停”按钮时 ,网络摄像头流将暂停。 最后,如果按下退出按钮 ,则整个应用
2回复

QTOpenCVsetMouseCallback“参数类型不匹配”

我在程序中使用 setMouseCallback 函数,该程序在 GUI 中向我展示了华硕 XITON PRO 的图像/深度图。 现在我想从深度图中获得点击点离华硕多远的信息。 我已经尝试了一些使用 setMousCallback 这样的程序并且它有效: 功能: 问题是,如果我尝试在我的程序 (GU
3回复

Qt:从一个物体发出相同的信号,但是参数不同;插槽按收到的参数区分

在使用opencv的C ++中,我捕获了一个图像,并且在处理完图像后,我得到了四个图像:原始的黄色,蓝色和绿色阈值图像。 最后,这些图像从ImageProcessing类发出: 其中iImage ...是QImage。 要在MainWindow类中显示图像,有一个插槽应根据所选的com
4回复

匹配草图(绘图)面部照片到数字彩色照片

我要将草图面(绘图照片)与彩色照片相匹配。 因此,对于研究,我想找出将草图绘制与颜色面匹配的挑战。 现在我已经发现了 分辨率像素差异 纹理差异 距离差异 和颜色(效果不大) 我想知道(在技术方面)什么是其他挑战以及可用的OPEN CV和JAVA CV方法和算法来克
2回复

没有这样的信号bb::cascades::QmlListView::triggered(QVariantListindexPath)

我试图在我的.qml文件中捕获ListView的信号,所以我在做: 它获取列表,以及我尝试的时间: 我收到此错误: 这个不成立。 ListView的文档告诉类发出此信号,我可以在标头listview.h中看到它,如下所示:
2回复

QMetaObject::connectSlotsByName:没有匹配的信号

我设置了一个QT菜单,它自动与动作函数on_actionOpen_triggered() 。 后来我想将一个文件名字符串传递给这个函数,以便在特殊条件下手动调用该函数。 所以我将函数签名更改为on_actionOpen_triggered( const char *filename_in )
1回复

警告消息“没有匹配的信号”

我正在使用基于qt4 qt-ros来构建应用程序。 但是有一个问题, signal & slot不起作用。 我使用的 vlc-qt 库提供了一个名为 played 的信号函数,如下面的链接所示。 vlc-qt 我尝试通过创建适当的slot函数来连接到QMetaObject :: conne