我在 QT 中使用 opencv2.3.1 来检测圆圈。
我的 Open 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
在主窗口中,我将 QPushButton 放在 Click 事件上,我尝试进行图像处理
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]));
}
}
项目建设没有任何问题。但问题是当我尝试运行程序时出现以下错误
开始
D:\ImgProcessing-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK\debug\ImgProcessing.exe...
程序意外结束。
D:\ImgProcessing-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK\debug\ImgProcessing.exe 退出,代码为 -1073741515
我不明白为什么它没有运行?如果尝试评论它正在运行的整个块。(没有图像处理代码)。当我启用 cv::mat 变量时,我得到了运行时错误。
请帮我解决这个问题。我正在尝试处理的图像如下