Я получаю сообщение об ошибке при запуске моей программы, особенно я думаю о манипулировании цветом в библиотеке OpenCV.
Я пытаюсь создать программу, которая берет видео с камеры Raspberry Pi и анализируетЭто.Я хочу найти самую яркую точку в видео и вычислить расстояние и угол, под которым эта точка находится от центра видеопотока.
В проекте, который я делаю, камера направлена в центр темной рамкис движущейся точкой света.
Я использую OpenCV 4.0.0 и C ++ на Raspberry Pi 3, а также библиотеку raspicam .
Явзяв указатели из этого руководства, но я использую C ++ и видеопоток вместо Python и статическое изображение.
raspicam::RaspiCam_Cv Camera;
cv::Mat image;
cv::Mat gray;
int nCount=100;
int nR, nC; // numRows, numCols
cv::Point imgMid;
Vect toCenter;
// for recording brightest part of img
double minVal, maxVal;
cv::Point minLoc, maxLoc;
Camera.set(cv::CAP_PROP_FORMAT, CV_8UC1);
#ifdef DEBUG
cout << "Opening camera..." << endl;
if (!Camera.open()) {
cerr << "Error opening the camera" << endl;
return -1;
}
cout << "Capturing " << nCount << " frames ...." << endl;
#endif
for (int i=0; i< nCount; i++) {
Camera.grab();
Camera.retrieve(image);
nR = image.rows;
nC = image.cols;
imgMid.x = nC / 2;
imgMid.y = nR / 2;
// convert to grayscale image
cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);
// find x, y coord of brightest part of img
cv::minMaxLoc(gray, &minVal, &maxVal, &minLoc, &maxLoc);
// calculate vector to the center of the camera
toCenter.first = distBtwn(imgMid.x, maxLoc.x, imgMid.y, maxLoc.y);
toCenter.second = angle(imgMid.x, maxLoc.x, imgMid.y, maxLoc.y);
Я ожидаю, что программа возьмет кадр из видеопотокапреобразуйте его в оттенки серого, найдите самую яркую часть кадра и, наконец, выполните некоторые вычисления, чтобы найти расстояние до центра кадра и угол точки от положительной оси x.
Этоошибка
Я прошу прощения за камеру телефона, но я работаю с кем-то еще в другом городе, где у них есть испытательное оборудование (я кодер), и эточто они отправилия.