Я новичок на этом форуме.Я хотел бы задать вам вопрос, который раздражал меня весь этот день.проблема в том, что я ничего не нахожу в интернете по этому поводу.В университете мы должны сделать следующее: написать программу, которая: - загружает изображения шахматной доски.(эти изображения находятся в папке, предоставленной профессором, они представляют некоторые фотографии (15), сделанные на смартфоне шахматной доски Huawei).-Определяет пересечения шахматной доски в каждом изображении.Вам нужна функция OpenCV cv::findChessboardCorners()
(необязательно: рассмотрите возможность использования функции cv::cornerSubPix()
для уточнения угловых обнаружений).
Я пишу ее с помощью Xcode (c ++) с opencv 3.4.5 наMacbook.
Проблема в том, что по инструкции findChessboardCorners
она выдает мне ошибку.
Я действительно не понимаю, с чем это связано, проблема в том, чтобы "прервать прерывание: 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;
}