#include #include #include #include #include using namespace std; using namespace cv; void kordetektalo1(const Mat& gray, vector& circles) { int cannyTh = 60; int minPoints = 30; int minR = 22; //K1: allitsd be int maxR = 26; //K1: allitsd be int d = 2; int minDist = 10; cv::HoughCircles(gray, circles, cv::HOUGH_GRADIENT, d, minDist, cannyTh, minPoints, minR, maxR); } int main(){ Mat img = imread("past.jpg", IMREAD_COLOR); if(img.empty()){ return 1; } // 1. Konvertáld szürkeskálássá az img képet Mat gray; cvtColor(img, gray, COLOR_BGR2GRAY); imwrite("gray_stud.png", gray); vector circles; kordetektalo1(gray, circles); // 2. Végezz mediánszűrés 11x11-es ablakmérettel. Mat mb2; medianBlur(img, mb2, 11); imwrite("filtered_stud.png", mb2); // 3. rajzold ki a detektált köröket az eredeti képre // sugár: 6, szín: tiszta piros, vonalvastagság: FILLED int radius = 6; for (auto c : circles) { int x = c[0]; int y = c[1]; circle(img, Point(x,y), radius, Scalar(0, 100, 100), 2, cv::LineTypes::FILLED); } imwrite("result_stud.png", img); // 4. Határozd meg a körök középpontja alá eső pixelek // KÉK komponensének átlagát a SZŰRT képen. double mean_v = 0; vector chs; split(circles, chs); //bgr int count = 0; for(auto c : circles){ int x = c[0]; int y = c[1]; mean_v += img.at(y,x); } mean_v /= circles.size(); // Jelenitsd meg az atlagot a standard kimeneten. // cout << mean_v << endl; waitKey(); return 0; }