astrgan 2 Жалоба Опубликовано June 11, 2014 С помощью этого кода хочу подготовить картинки для обучения нейросети. #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <vector> #include <iostream> #include <sstream> int main() { std::vector<cv::Vec3f> vecCircles; std::vector<cv::Vec3f>::iterator itrCircles; cv::VideoCapture capWebcam; cv::Mat matOriginal,matProcessed; int name = 0; std::string path = "/home/alex/development/"; std::vector<int> compression_params; //vector that stores the compression parameters of the image compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); //specify the compression technique compression_params.push_back(98); //specify the compression quality capWebcam.open(0); while(1){ capWebcam.read(matOriginal); cv::inRange(matOriginal, cv::Scalar(0,0,175), cv::Scalar(100,100,256),matProcessed); cv::HoughCircles(matProcessed, vecCircles, CV_HOUGH_GRADIENT, 2, matProcessed.rows / 4,100,50,10,400); for (itrCircles = vecCircles.begin(); itrCircles != vecCircles.end(); itrCircles++){ int x = (int)(*itrCircles)[0]; int y = (int)(*itrCircles)[1]; int w = 2*(int)(*itrCircles)[2]; int h = 2*(int)(*itrCircles)[2]; cv::Rect rect(x-w/2,y-h/2,w,h); cv::rectangle(matProcessed, rect, cv::Scalar(0,0,255), 3); cv::rectangle(matOriginal, rect, cv::Scalar(0,0,255), 3); std::ostringstream out; out<<path<<name<<".jpg"; cv::imwrite(out.str(), cv::Mat(matOriginal,rect),compression_params); std::cout<<"save: "<< out.str() <<std::endl; name++; } cv::imshow("matProcessed",matProcessed); cv::imshow("matOriginal",matOriginal); cv::waitKey(35); } } Но бывает вылетает это Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано June 11, 2014 Скорее всего ROI выходит за изображение (проверьте rect). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах