#include #include int main() { cv::VideoCapture cap(0); if (!cap.isOpened()) { std::cout << "Не удалось открыть камеру\n"; return -1; } cv::Mat frame, hsv, mask; while (true) { cap >> frame; if (frame.empty()) break; cv::cvtColor(frame, hsv, cv::COLOR_BGR2HSV); cv::Scalar lower(0, 30, 60); cv::Scalar upper(20, 150, 255); cv::inRange(hsv, lower, upper, mask); cv::GaussianBlur(mask, mask, cv::Size(7,7), 0); std::vector> contours; cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE); for (const auto &c : contours) { if (cv::contourArea(c) > 8000) { cv::Rect r = cv::boundingRect(c); cv::rectangle(frame, r, cv::Scalar(255, 0, 0), 2); } } cv::imshow("Hand Tracking", frame); cv::imshow("Mask", mask); if (cv::waitKey(1) == 27) break; } cap.release(); cv::destroyAllWindows(); return 0; }