円を検出するために 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 を配置し、画像処理を実行しようとしています
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 変数を有効にすると、ランタイム エラーが発生します。
問題を解決するのを手伝ってください。私が処理しようとしている画像は以下です