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
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
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