GUI 용 Qt를 사용하여 C++에서 OpenCV를 사용하여 이미지 처리 작업을위한 간단한 인터페이스를 만들려고했습니다. GUI를 통해 이미지를로드 할 수 있지만 pushbutton_3을 누르면 이미지를 회색조로 변환하면 OpenCV 관련 오류가 발생합니다. 나는 틀린 일을하고 있다고 확신한다. 어떤 사람이 나에게 도움을 줄 수 있습니까?Qt + OpenCV 그레이 스케일 오류
파일은 아래를 참조하시기 바랍니다 :
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <vector>
#include <QtCore/QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/types_c.h>
#include <opencv2/imgproc/imgproc.hpp>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
private:
Ui::MainWindow *ui;
//Images variables
cv::Mat image_Idl;
cv::Mat image_Lit;
cv::Mat image_Idl_G;
cv::Mat image_Lit_G;
double threshHold;
};
#endif // MAINWINDOW_H
//mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <iostream>
#include <QtCore/QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/types_c.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <QSpinBox>
#include <QSlider>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->horizontalSlider->setRange(0,255);
ui->spinBox->setRange(0,255);
connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->spinBox,SLOT(setValue(int)));
connect(ui->spinBox,SIGNAL(valueChanged(int)),ui->horizontalSlider,SLOT(setValue(int)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,tr("Load Lit Image"),".",tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
image_Lit = cv::imread(fileName.toAscii().data());
cv::namedWindow("Lit Image");
cv::imshow("Lit Image", image_Lit);
}
void MainWindow::on_pushButton_2_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,tr("Load Lit Image"),".",tr("Image Files (*.png *.jpg *.jpeg *.bmp)"));
image_Idl = cv::imread(fileName.toAscii().data());
cv::namedWindow("Ideal Lit");
cv::imshow("Ideal Lit", image_Idl);
}
void MainWindow::on_pushButton_3_clicked()
{
//Converstions
//Convert Lit to gray
cv::cvtColor(image_Lit, image_Lit_G,CV_RGB2GRAY);
//Convert Ideal gray
cv::cvtColor(image_Idl, image_Idl_G,CV_RGB2GRAY);
//Threshold the Images to a designated value
// Lit
threshHold = ui->horizontalSlider->value();
cv::threshold(image_Lit_G,image_Lit_G, threshHold,255,cv::THRESH_BINARY);
cv::namedWindow("Gray Scaled Image");
cv::imshow("Gray Scaled Image", image_Lit_G);
}
오류를 컴파일러에서 : C 런타임 함수에 전달
잘못된 매개 변수를. C 런타임 함수에 전달 된 매개 변수가 잘못되었습니다. OpenCV 오류 : CvtColor, C : \ OpenCV \ modules \ imgproc \ src \ color.cpp 파일에서 2834 행의 어설 션이 실패했습니다 (scn == 3 || scn == 4) 프로그램이 예기치 않게 종료되었습니다.
팝업 창 오류 :
의 Microsoft Visual C++ 비정상적인 방법으로 종료 요청에 따라
이 응용 프로그램.
코드 위
어떤 오류가 발생합니까? 헤더 파일 (나는이 문제와 관련이 전혀 없다고 생각하지 않습니다)에서만 추측하기가 거의 불가능할 것입니다. – drescherjm
"오류가 발생했습니다"라는 점을 좀 더 구체적으로 설명해 주시겠습니까? 또한 제공하는 코드로는 문제를 진단하기에 충분하지 않습니다. –
이미지를 OpenCV 형식에서 Qt imge로 (또는 Qt에서 이미지를 표시하기 위해 사용하고있는 것) 변환하는 코드 부분을 게시 할 수 있습니까? – MeloMCR