Opencv: Référence non définie à cvRound dans opencv 3.2

Créé le 23 mars 2017  ·  3Commentaires  ·  Source: opencv/opencv

Informations système (version)
  • OpenCV => 3.2
  • Système d'exploitation / Plate-forme => Linux Ubuntu 16.04 64 bits
  • Compilateur => gcc
Description détaillée

J'ai récemment installé opencv 3.2 dans le système Ubuntu 16.04 et essayé d'exécuter un code C à l'aide de la bibliothèque opencv. Le code ne compile pas à cause du problème suivant :

/tmp/ccwgquWQ.o: In function `cvPointFrom32f':
try.c:(.text+0x54d): undefined reference to `cvRound'
try.c:(.text+0x563): undefined reference to `cvRound'
/tmp/ccwgquWQ.o: In function `cvReadInt':
try.c:(.text+0xe68): undefined reference to `cvRound'
/tmp/ccwgquWQ.o: In function `cvEllipseBox':
try.c:(.text+0x10d4): undefined reference to `cvRound'
try.c:(.text+0x10f6): undefined reference to `cvRound'
collect2: error: ld returned 1 exit status

J'ai posé une question à ce sujet dans stackoverflow et j'ai reçu la réponse disant que c'est un bogue présent dans opencv3.2. [http://stackoverflow.com/questions/42918747/yolo-c-compilation-failure-with-debug-1]

La raison de l'appeler comme un bogue est la suivante :
La fonction CvRound a été définie dans types_c.h dans opencv2 alors que dans opencv3, elle n'a pas été définie dans types_c.h mais dans core/fast_math.hpp. Bien qu'il ne soit pas défini dans types_c.h, il est toujours appelé dans types_c.h, core_c.h et imgproc_c.h sans aucune référence à fast_math.hpp

J'ai essayé d'inclure le chemin "fast_math.hpp" (#include core/fast_math.hpp) dans types_c.h, core_c.h et imgproc_c.h mais cela n'a pas résolu le problème.

Veuillez examiner ce problème et le résoudre le plus tôt possible

duplicate wontfix

Commentaire le plus utile

C'est vraiment étrange. Il existe de nombreuses implémentations en C utilisant CUDA et OpenCV et sont populaires. Qu'en est-il alors de telles implémentations ? ex: YOLO

Tous les 3 commentaires

exécuter un code C

OpenCV est une bibliothèque C++. Il n'y a pas de support pour la compilation directe en C, cela ne fonctionne pas (crash parfois, voir le problème cvGetSize (#6221)). L'API OpenCV C est également candidate à la suppression.

Vous devez compiler votre programme en C++ pour utiliser OpenCV.

C'est vraiment étrange. Il existe de nombreuses implémentations en C utilisant CUDA et OpenCV et sont populaires. Qu'en est-il alors de telles implémentations ? ex: YOLO

En ce qui concerne YOLO, reportez-vous spécialement à la réponse https://stackoverflow.com/a/46808785/2953509

Cette page vous a été utile?
0 / 5 - 0 notes