QT에서 opencv2.3.1을 사용하여 원을 감지했습니다.openCV를 사용하여 QT에서 이미지 처리
내 오픈 CV 디렉토리는 D입니다 : \ OpenCV의
다음내 코드 :
프로젝트 파일 :
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = ImgProcessing
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h \
FORMS += mainwindow.ui
INCLUDEPATH +=D:\\opencv\\build\\include
LIBS += -LD:\\opencv\\build\\x86\\vc10\\lib \
-lopencv_calib3d231d \
-lopencv_contrib231d \
-lopencv_core231d \
-lopencv_features2d231d \
-lopencv_flann231d \
-lopencv_gpu231d \
-lopencv_haartraining_engined \
-lopencv_highgui231d \
-lopencv_imgproc231d \
-lopencv_legacy231d \
-lopencv_ml231d \
-lopencv_objdetect231d \
-lopencv_ts231d \
-lopencv_video231d
및 메인 창에 내가 시도입니다 Click 이벤트에 QPushButton을 넣어
이미지 프로세싱을 할 것입니다.void MainWindow::on_pushButton_clicked()
{
cv::Mat matOrg=cv::imread("D:\\temp\\Test_mar26-5-1.bmp");
cv::Mat matProcessed;
std::vector<cv::Vec3f> vecCircles;
std::vector<cv::Vec3f>::iterator itrCircles;
cv::inRange(matOrg,cv::Scalar(0,0,175),cv::Scalar(100,100,256),matProcessed);
cv::GaussianBlur(matProcessed,matProcessed,cv::Size(9,9),1.5);
cv::HoughCircles(matProcessed,vecCircles,CV_HOUGH_GRADIENT,2,matProcessed.rows/4,100,50,10,400);
for(itrCircles =vecCircles.begin();itrCircles !=vecCircles.end();itrCircles++)
{
ui->plainTextEdit->appendPlainText(QString("X: ")+ QString::number((*itrCircles)[0]));
ui->plainTextEdit->appendPlainText(QString("Y: ")+ QString::number((*itrCircles)[1]));
ui->plainTextEdit->appendPlainText(QString("Radius: ")+ QString::number((*itrCircles)[2]));
}
}
어떤 문제도없는 프로젝트 빌딩. \ ImgProcessing 빌드 - Desktop_Qt_5_0_0_MSVC2010_32bit_SDK \ 디버그 \의 ImgProcessing.exe
프로그램 ... : 내가
D를 시작 오류
다음 내가 무엇입니까 프로그램을 실행하려고 할 때하지만 문제는 뜻밖에 끝났습니다.
D : \ ImgProcessing 빌드 - Desktop_Qt_5_0_0_MSVC2010_32bit_SDK \ 디버그 \의 ImgProcessing.exe 코드 -1073741515
가 실행되지 왜 내가 점점 아니에요로 종료? 전체 블록에 주석 처리를 시도하면 실행 중입니다 (이미지 처리 코드 없음). 내가 cv :: mat 변수를 활성화하면 그 시간 이후에 런타임 오류가 발생합니다.
문제를 해결할 수 있도록 도와주세요.
for(itrCircles =vecCircles.begin();itrCircles !=vecCircles.end();itrCircles++)
{
ui->plainTextEdit->appendPlainText(QString("X: ")+ QString::number((*itrCircles)[0]));
ui->plainTextEdit->appendPlainText(QString("Y: ")+ QString::number((*itrCircles)[1]));
ui->plainTextEdit->appendPlainText(QString("Radius: ")+ QString::number((*itrCircles)[2]));
}
이 vecCircles에 문제가있을 수 있습니다 : 내가 프로세스에 노력하고 이미지가
디버거는 무엇을 말합니까? – cmannett85
빌드를 클릭하면됩니다. 그것은 아무런 문제없이 건물입니다. 실행을 클릭하면 "프로그램이 예기치 않게 끝났습니다."라는 오류 메시지가 나타납니다. – Saravanan
그리고 이들 중 어느 것도 디버거가 아닙니다. 딱정벌레가있는 재생 버튼을 누르면 Qt Creator가 디버거를 통해 앱을 실행하고 디버그 퍼스펙티브를 엽니 다. – cmannett85