Я использую Microsoft Visual C++ 6.0 и Microsoft Visual Studio 2008 для разработки академического проекта компьютерного зрения.
В этом проекте мне нужно использовать OpenCV 1.1 (http://opencv.willowgarage.com/) и CvBlob (http://code.google.com/p) /cvblob/).
Я пытался скомпилировать этот проект с помощью Microsoft Visual Studio 2008, и он компилируется без ошибок.
При использовании Visual C++ 6.0 у меня появилось много ошибок.
OpenCV не несет ответственности за такое поведение, поскольку тривиальный проект, использующий только OpenCV (без CvBlob), работает хорошо.
Чтобы лучше понять ошибки, я создал пустой проект, включив только CvBlob.
Прикрепляю сюда краткий обзор ошибок:
cvcontour.cpp(253) : error C2371: 'i' : redefinition; different basic types (and others similar to this. i solved with variable redefinition, every time)
cvcontour.cpp(318) : error C2664: 'thiscall std::vector::std::vector(unsigned int,const struct CvPoint &,const class std::allocator &)' : cannot convert parameter 1 from 'class std::deque::iterator' to 'unsigned int' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
cvtrack.cpp(278) : error C2440: 'initializing' : cannot convert from 'struct cvb::CvTrack *const ' to 'struct cvb::CvBlob *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Есть ли у вас идеи, как я могу решить эти проблемы?
Заранее спасибо за помощь!
-------- ОБНОВЛЕНИЕ - -------
Я попытался отредактировать и исправить код, чтобы устранить три ошибки в моем вопросе.
Ошибку C2664, похоже, сложнее обойти...
Я заменил строку с обвинением
return new CvContourPolygon(dq.begin(), dq.end());
где CvContourPolygon — это определение типа std::vector CvContourPolygon;
с < /p>
deque::iterator dq_it;dq_it = dq.begin();
CvContourPolygon v_tmp;
v_tmp.push_back(*dq_it);
while (dq_it != dq.end()){
v_tmp.push_back(*dq_it++);
}
Во-первых, то, что я написал, верно? Как мне решить возникшие из-за этого ошибки?
Заранее спасибо!
Ошибки ( предположим, что первая строка — 318:
cvcontour.cpp(319) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::deque::iterator' (or
there is no acceptable conversion)
cvcontour.cpp(321) : error C2664: 'push_back' : cannot convert parameter 1 from 'int' to 'const struct CvPoint &'
Reason: cannot convert from 'int' to 'const struct CvPoint'
No constructor could take the source type, or constructor overload resolution was ambiguous
cvcontour.cpp(322) : error C2679: binary '!=' : no operator defined which takes a right-hand operand of type 'class std::deque::iterator' (or there is no acceptable conversion)
cvcontour.cpp(322) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Ошибка выполнения cl.exe.
-------- UPDATE2 -- ------
Кажется, этот код работает правильно!
deque::iterator dq_it;
dq_it = dq.begin();
CvContourPolygon v_tmp;
for (dq_it = dq.begin(); dq_it != dq.end(); ++dq_it){
v_tmp.push_back(*dq_it);
}
//return new CvContourPolygon(dq.begin(), dq.end());
return &v_tmp;
Подробнее здесь: https://stackoverflow.com/questions/392 ... sual-c-6-0
Ошибка компиляции cvblob в Visual C++ 6.0 ⇐ C++
Программы на C++. Форум разработчиков
1730319952
Anonymous
Я использую Microsoft Visual C++ 6.0 и Microsoft Visual Studio 2008 для разработки академического проекта компьютерного зрения.
В этом проекте мне нужно использовать OpenCV 1.1 (http://opencv.willowgarage.com/) и CvBlob (http://code.google.com/p) /cvblob/).
Я пытался скомпилировать этот проект с помощью Microsoft Visual Studio 2008, и он компилируется без ошибок.
При использовании Visual C++ 6.0 у меня появилось много ошибок.
OpenCV не несет ответственности за такое поведение, поскольку тривиальный проект, использующий только OpenCV (без CvBlob), работает хорошо.
Чтобы лучше понять ошибки, я создал пустой проект, включив только CvBlob.
Прикрепляю сюда краткий обзор ошибок:
cvcontour.cpp(253) : error C2371: 'i' : redefinition; different basic types (and others similar to this. i solved with variable redefinition, every time)
cvcontour.cpp(318) : error C2664: 'thiscall std::vector::std::vector(unsigned int,const struct CvPoint &,const class std::allocator &)' : cannot convert parameter 1 from 'class std::deque::iterator' to 'unsigned int' No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
cvtrack.cpp(278) : error C2440: 'initializing' : cannot convert from 'struct cvb::CvTrack *const ' to 'struct cvb::CvBlob *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Есть ли у вас идеи, как я могу решить эти проблемы?
Заранее спасибо за помощь!
[b]-------- ОБНОВЛЕНИЕ - -------[/b]
Я попытался отредактировать и исправить код, чтобы устранить три ошибки в моем вопросе.
Ошибку C2664, похоже, сложнее обойти...
Я заменил строку с обвинением
return new CvContourPolygon(dq.begin(), dq.end());
где CvContourPolygon — это определение типа std::vector CvContourPolygon;
с < /p>
deque::iterator dq_it;dq_it = dq.begin();
CvContourPolygon v_tmp;
v_tmp.push_back(*dq_it);
while (dq_it != dq.end()){
v_tmp.push_back(*dq_it++);
}
Во-первых, то, что я написал, верно? Как мне решить возникшие из-за этого ошибки?
Заранее спасибо!
Ошибки ( предположим, что первая строка — 318:
cvcontour.cpp(319) : error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class std::deque::iterator' (or
there is no acceptable conversion)
cvcontour.cpp(321) : error C2664: 'push_back' : cannot convert parameter 1 from 'int' to 'const struct CvPoint &'
Reason: cannot convert from 'int' to 'const struct CvPoint'
No constructor could take the source type, or constructor overload resolution was ambiguous
cvcontour.cpp(322) : error C2679: binary '!=' : no operator defined which takes a right-hand operand of type 'class std::deque::iterator' (or there is no acceptable conversion)
cvcontour.cpp(322) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Ошибка выполнения cl.exe.
[b]-------- UPDATE2 -- ------[/b]
Кажется, этот код работает правильно!
deque::iterator dq_it;
dq_it = dq.begin();
CvContourPolygon v_tmp;
for (dq_it = dq.begin(); dq_it != dq.end(); ++dq_it){
v_tmp.push_back(*dq_it);
}
//return new CvContourPolygon(dq.begin(), dq.end());
return &v_tmp;
Подробнее здесь: [url]https://stackoverflow.com/questions/3925255/cvblob-compile-error-in-visual-c-6-0[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия