Avatar ·

تحسين خوارزمية التعرف على علبة كوكا كولا في الصورة

مرحبًا أيها الزملاء. أنا أكتب برنامجًا للتعرف على علبة كوكا كولا في الصور باستخدام OpenCV بلغة C++. الفكرة بسيطة: العلبة حمراء، أسطوانية، ولها شريط أبيض. أستخدم التصفية اللونية (HSV) لعزل المناطق الحمراء، ثم أجد الخطوط العريضة وأقربها إلى أشكال بيضاوية. يبدو الأمر منطقيًا، لكن هناك مشكلة كبيرة: الخوارزمية تتعطل بشكل رهيب على الصور الحقيقية. هذا هو الكود الحالي الخاص بي: ```cpp cv::Mat hsv, mask; cv::cvtColor(img, hsv, cv::COLOR_BGR2HSV); cv::inRange(hsv, cv::Scalar(0, 100, 100), cv::Scalar(10, 255, 255), mask); // أيضًا أضيف الحد السفلي للأحمر (من 160 إلى 180) cv::Mat mask2; cv::inRange(hsv, cv::Scalar(160, 100, 100), cv::Scalar(180, 255, 255), mask2); mask = mask | mask2; std::vector> contours; cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); for (auto& c : contours) { if (c.size() > 50) { cv::RotatedRect ellipse = cv::fitEllipse(c); // التحقق من النسبة