Bonjour,
j'installe opencv sur mon RPI pour faire de la capture et du traitement d'images.
De tout ce que j'ai lu, il faut disposer de la lib mmal également. Et c'est cette dernière qui me pose problème qd je compile un programme de test (raspicamtest.c).
Le makefile que j'utilise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
OBJS = objs

CFLAGS_OPENCV = -I/usr/include/opencv
LDFLAGS2_OPENCV = -lopencv_highgui -lopencv_core -lopencv_legacy -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_imgproc -lpthread -lm

USERLAND_ROOT = $(HOME)/git/raspberrypi/userland
CFLAGS_PI = \
	-I$(USERLAND_ROOT)/host_applications/linux/libs/bcm_host/include \
	-I$(USERLAND_ROOT)/host_applications/linux/apps/raspicam \
	-I$(USERLAND_ROOT) \
	-I$(USERLAND_ROOT)/interface/vcos/pthreads \
	-I$(USERLAND_ROOT)/interface/vmcs_host/linux \
	-I$(USERLAND_ROOT)/interface/mmal \

LDFLAGS_PI = -L$(USERLAND_ROOT)/build/lib -lmmal_core -lmmal -lmmal_util -lvcos -lbcm_host

BUILD_TYPE=debug
#BUILD_TYPE=release

CFLAGS_COMMON = -Wno-multichar -g $(CFLAGS_OPENCV) $(CFLAGS_PI) -MD

ifeq ($(BUILD_TYPE), debug)
	CFLAGS = $(CFLAGS_COMMON)
endif
ifeq ($(BUILD_TYPE), release)
	CFLAGS = $(CFLAGS_COMMON) -O3
endif

LDFLAGS = 
LDFLAGS2 = $(LDFLAGS2_OPENCV) $(LDFLAGS_PI) -lX11 -lXext -lrt -lstdc++

RASPICAMCV_OBJS = \
	$(OBJS)/RaspiCamControl.o \
	$(OBJS)/RaspiCLI.o \
	$(OBJS)/RaspiCamCV.o \

RASPICAMTEST_OBJS = \
	$(OBJS)/RaspiCamTest.o \

TARGETS = libraspicamcv.a raspicamtest libraspicamcv.so

all: $(TARGETS)

$(OBJS)/%.o: %.c
	gcc -c $(CFLAGS) $< -o $@

$(OBJS)/%.o: $(USERLAND_ROOT)/host_applications/linux/apps/raspicam/%.c
	gcc -c $(CFLAGS) $< -o $@

libraspicamcv.a: $(RASPICAMCV_OBJS)
	ar rcs libraspicamcv.a -o $+

libraspicamcv.so: $(RASPICAMCV_OBJS)
	gcc -shared -o libraspicamcv.so $+ -Wl,-whole-archive $(LDFLAGS_PI) -lopencv_core -lopencv_highgui -Wl,-no-whole-archive

raspicamtest: $(RASPICAMTEST_OBJS) libraspicamcv.a
	gcc $(LDFLAGS) $+ $(LDFLAGS2) -L. libraspicamcv.a -o $@

clean:
	rm -f $(OBJS)/* $(TARGETS)

-include $(OBJS)/*.d
La sortie du makefile:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
make
gcc  objs/RaspiCamTest.o libraspicamcv.a -lopencv_highgui -lopencv_core -lopencv_legacy -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_imgproc -lpthread -lm -L/home/pi/git/raspberrypi/userland/build/lib -lmmal_core -lmmal -lmmal_util -lvcos -lbcm_host -lX11 -lXext -lrt -lstdc++ -L. libraspicamcv.a -o raspicamtest
libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_saturation':
/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1086: undefined reference to `mmal_status_to_int'
libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_sharpness':
/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1112: undefined reference to `mmal_status_to_int'
libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_contrast':
/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1139: undefined reference to `mmal_status_to_int'
libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_brightness':
/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1166: undefined reference to `mmal_status_to_int'
libraspicamcv.a(RaspiCamControl.o): In function `raspicamcontrol_set_ISO':
/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1188: undefined reference to `mmal_status_to_int'
libraspicamcv.a(RaspiCamControl.o):/home/pi/git/raspberrypi/userland/host_applications/linux/apps/raspicam/RaspiCamControl.c:1209: more undefined references to `mmal_status_to_int' follow
collect2: error: ld returned 1 exit status
Makefile:57: recipe for target 'raspicamtest' failed
make: *** [raspicamtest] Error 1
Le path du RPI:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/usr/local/lib:/usr/local/include:/usr/lib/gcc/arm-linux-gnueabihf/perl/5.20.2/CORE:/opt/vc/lib:/opt/vc/include
ldconfig -p |grep libmmal donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
	libmmal_vc_client.so (libc6,hard-float) => /opt/vc/lib/libmmal_vc_client.so
	libmmal_util.so (libc6,hard-float) => /opt/vc/lib/libmmal_util.so
	libmmal_core.so (libc6,hard-float) => /opt/vc/lib/libmmal_core.so
	libmmal_components.so (libc6,hard-float) => /opt/vc/lib/libmmal_components.so
	libmmal.so (libc6,hard-float) => /opt/vc/lib/libmmal.so
La série de "undefined reference" me fait penser à une librairie inaccessible mais je ne vois pas laquelle. Pourtant tout me semble correctement installé et accessible.
Merci pour vos avis.