Это основано на этом вопросе, в котором основное внимание уделяется больше об OpenCV C++, поэтому я решил задать этот вопрос. Это часть моей программы:
vector<vector<Point> > contours;
vector<vector<Point> > largest_contours;
double largest_area = 0;
for(int i= 0; i < contours.size(); i++){
double area = contourArea(contours[i]);
if(area >= largest_area){
largest_area = area;
largest_contours = contours[i]; <---THIS is the problem
}
}
В основном программа будет выполнять:
- Сканирует все контуры, обнаруженные в последовательности изображений/видео.
- Помечает контуры как
contours[i]
- Вычисляет площадь каждого контура
- Сравнивает
contours[i]
по площади. Большая площадь становитсяlargest_area
, а самый большой контур становитсяlargest_contours
- Наконец,
DrawContours
иimshow
Строка с проблемой покажет это сообщение над мышью:
Error: No operator "=" matches these operands
Вопрос в том, почему contours[i]
НЕ равно largest_contours
, несмотря на то, что они имеют один и тот же класс (vector<vector<Point> >
) и имеют только одно значение для каждого контура одновременно? Может ли кто-нибудь объяснить, почему и как это решить?
Заранее спасибо.
РЕДАКТИРОВАТЬ (1): изменено contourArea(contours)
на contourArea(contours[i])
. Добавлено объявление для largest_contours
и contours
.
largest_contours
иcontours
. - person Luchian Grigore   schedule 29.01.2013