Напишите максимально совершенный код для разработки приложения, которое с помощью набора алгоритмов позволяет подсчитывать и идентифицировать электрические сопротивления, присутствующие в видео. Это приложение должно иметь возможность сегментировать различные сопротивления (и только сопротивления), определяя их значение (выраженное в омах) и относительное расположение (какую область изображения занимает каждое сопротивление) в каждом кадре видео.
На C++ и с использованием openCV
Может ли кто-нибудь здесь помочь? Я не знаю, что делаю не так
Напишите максимально совершенный код для разработки приложения, которое с помощью набора алгоритмов позволяет подсчитывать и идентифицировать электрические сопротивления, присутствующие в видео. Это приложение должно иметь возможность сегментировать различные сопротивления (и только сопротивления), определяя их значение (выраженное в омах) и относительное расположение (какую область изображения занимает каждое сопротивление) в каждом кадре видео. На C++ и с использованием openCV Может ли кто-нибудь здесь помочь? Я не знаю, что делаю не так [code]#include #include
using namespace cv; using namespace std;
// Função para identificar as bandas de cores em um resistor vector identifyColorBands(const Mat& roi) { vector bands; Mat hsv, mask; cvtColor(roi, hsv, COLOR_BGR2HSV);
for (size_t i = 0; i < lower_bounds.size(); i++) { inRange(hsv, lower_bounds[i], upper_bounds[i], mask); vector contours; findContours(mask, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
for (const auto& contour : contours) { Rect boundingBox = boundingRect(contour); if (boundingBox.height > roi.rows / 3 && boundingBox.width < roi.cols / 3) { bands.push_back(boundingBox); } } }
// Ordenar as bandas de cores de acordo com a posição no eixo x sort(bands.begin(), bands.end(), [](const Rect& a, const Rect& b) { return a.x < b.x; });
return bands; }
// Função para detectar e rotular resistências void detectAndLabelResistors(Mat& frame) { Mat gray, blurred, binary, dilated;
// Converter para escala de cinza cvtColor(frame, gray, COLOR_BGR2GRAY);
// Aplicar filtro gaussiano para suavizar a imagem GaussianBlur(gray, blurred, Size(5, 5), 1.5);
// Binarizar a imagem usando limiarização global com Otsu threshold(blurred, binary, 0, 255, THRESH_BINARY | THRESH_OTSU);
// Dilatar a imagem para conectar componentes Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5)); dilate(binary, dilated, kernel);