Ловушка прерывания:6 проблема с findchessboard
Я новичок на этом форуме. Я хотел бы задать вам вопрос, который раздражал меня весь этот день. проблема в том, что я ничего не нахожу в интернете об этом. В университете мы должны сделать это: написать программу, которая: -загружает изображения шахматной доски. ( эти изображения находятся в папке, предоставленной профессором, они представляют собой некоторые фотографии (15), сделанные смартфоном Huawei шахматной доски). -Обнаруживает пересечения шахматной доски на каждом изображении. Функция рад что вам нужно это CV::findChessboardCorners() (опционально: рассмотреть возможность использования резюме::cornerSubPix (функции), для уточнения угол обнаружения).
Я пишу его с помощью Xcode ( c++) с opencv 3.4.5 на Macbook.
Проблема в том, что при инструкции "findChessboardCorners" она выдает мне ошибку. Я действительно не понимаю, что вызывает это, проблема в том, что " abort trap: 6. Может ли кто-нибудь мне помочь?
Большое спасибо.
Что я уже пробовал:
#include <sstream> #include <iostream> #include <opencv2/core.hpp> #include <opencv2/calib3d/calib3d.hpp> #include <opencv2/highgui.hpp> #include <opencv2/imgproc.hpp> #define points_per_row 12 #define points_per_colum 8 using namespace cv; using namespace std; int main(int argc, const char * argv[]) { //read the file stringstream sst; vector<Mat> imagesArray; vector<Point2f> centers; //this will be filled by the detected centers Size patternSize = Size(11, 7); //2nd parameter FindchessCorners bool patternfound = false; //result of findChessboardCorners cout << "flag1 "<< endl; for(int i = 1; i < 16; i++){ sst << "img" << i << ".jpg"; cout << sst.str() << endl; imagesArray.push_back(imread(sst.str())); // putting into an array cout << "flag2" << endl; }//for //PUNTO 2: individuation of the corners of every image for(int i = 0 ; i <=15 ; i++){ cout << "flag3" << endl; patternfound = findChessboardCorners(imagesArray[i] , patternSize , centers); if(patternfound){ cout << "pattern found:"<< patternSize << endl; cout << "centroids: " << centers << endl; cout << "centroids array size: " << centers.size() << endl; for(int j = 0; j < centers.size(); j++) cout << centers[j] << endl; } }//for return 0; }