Files
kepfeldolgozas/ora5/proj1/main.cpp

76 lines
1.6 KiB
C++
Raw Normal View History

2025-12-13 21:40:13 +01:00
#include <iostream>
#include <vector>
2025-10-09 17:30:43 +02:00
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
2025-12-13 21:40:13 +01:00
using namespace std;
2025-10-09 17:30:43 +02:00
using namespace cv;
2025-12-13 21:40:13 +01:00
void kordetektalo1(const Mat& gray, vector<Vec3f>& circles) {
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
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);
}
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
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<Vec3f> circles;
kordetektalo1(gray, circles);
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
// 2. Végezz mediánszűrés 11x11-es ablakmérettel.
Mat mb2;
medianBlur(img, mb2, 11);
imwrite("filtered_stud.png", mb2);
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
// 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;
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
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);
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
// 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<Mat> chs;
split(circles, chs); //bgr
int count = 0;
for(auto c : circles){
int x = c[0];
int y = c[1];
mean_v += img.at<uchar>(y,x);
}
mean_v /= circles.size();
// Jelenitsd meg az atlagot a standard kimeneten.
// cout << mean_v << endl;
waitKey();
2025-10-09 17:30:43 +02:00
2025-12-13 21:40:13 +01:00
return 0;
2025-10-09 17:30:43 +02:00
}