LINUX.ORG.RU

[opencv][несколько камер] Нелинкуется код


0

1

В дебиан тестинг установил opencv

код компилируется но не линкуется


#include "highgui.h"
#include "cv.h"
#include <stdio.h>
#include <ctype.h>

int main()

{
  int ncams = cvcamGetCamerasCount( );
  printf("result %d\n", ncams);

  return 0;

}

$ gcc `pkg-config --cflags opencv` -c ./proba.c ; gcc ./proba.o -o code `pkg-config --libs opencv` -L "/usr/lib"
./proba.o: In function `main':
proba.c:(.text+0x3a52): undefined reference to `cvcamGetCamerasCount'
collect2: ld returned 1 exit status

нужно опросить несколько камер сразу, а вот так не работает


CvCapture* capture = cvCreateCameraCapture(200);
    
CvCapture* capture1 = cvCreateCameraCapture(201);


авторы выкинули cvcam и очень непонятно что делать теперь, все примеры относятся к этой части библиотеки...

★★★★★

Пользуй video4linuks2. Ваш КО

anonymous ()
Ответ на: комментарий от anonymous

/dev/v4l/by-path# ls -la
total 0
drwxr-xr-x 2 root root 80 Dec 17 11:24 .
drwxr-xr-x 4 root root 80 Dec 9 19:38 ..
lrwxrwxrwx 1 root root 12 Dec 9 19:38 pci-0000:00:1a.7-usb-0:5:1.0-video-index0 -> ../../video0
lrwxrwxrwx 1 root root 12 Dec 17 11:24 pci-0000:00:1d.0-usb-0:1:1.0-video-index0 -> ../../video1


# v4l-info

### v4l2 device info [/dev/video0] ###
general info
VIDIOC_QUERYCAP
   driver : «uvcvideo»
   card : «HP Webcam [2 MP Fixed]»
   bus_info : «usb-0000:00:1a.7-5»
   version : 0.1.0
   capabilities : 0x4000001 [VIDEO_CAPTURE,STREAMING]

-cut-

video capture
VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
   index : 0
   type : VIDEO_CAPTURE
   flags : 0
   description : «YUV 4:2:2 (YUYV)»
   pixelformat : 0x56595559 [YUYV]
VIDIOC_G_FMT(VIDEO_CAPTURE)
   type : VIDEO_CAPTURE
   fmt.pix.width : 640
   fmt.pix.height : 480
   fmt.pix.pixelformat : 0x56595559 [YUYV]
   fmt.pix.field : NONE
   fmt.pix.bytesperline : 1280
   fmt.pix.sizeimage : 614400
   fmt.pix.colorspace : SRGB
   fmt.pix.priv : 0


-cut-


### video4linux device info [/dev/video0] ###
general info
VIDIOCGCAP
   name : «HP Webcam [2 MP Fixed]»
   type : 0x1 [CAPTURE]
   channels : 1
   audios : 0
   maxwidth : 1600
   maxheight : 1200
   minwidth : 48
   minheight : 32

channels
VIDIOCGCHAN(0)
   channel : 0
   name : «Camera 1»
   tuners : 0
   flags : 0x0 []
   type : CAMERA
   norm : 0
-cut-

# v4l-info /dev/video1

### v4l2 device info [/dev/video1] ###
general info
VIDIOC_QUERYCAP
   driver : «sunplus»
   card : «USB Camera (04fc:504a)»
   bus_info : «usb-0000:00:1d.0-1»
   version : 2.7.0
   capabilities : 0x5000001 [VIDEO_CAPTURE,READWRITE,STREAMING]

-cut-

video capture
VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
   index : 0
   type : VIDEO_CAPTURE
   flags : 1
   description : «JPEG»
   pixelformat : 0x4745504a [JPEG]
VIDIOC_G_FMT(VIDEO_CAPTURE)
   type : VIDEO_CAPTURE
   fmt.pix.width : 640
   fmt.pix.height : 480
   fmt.pix.pixelformat : 0x4745504a [JPEG]
   fmt.pix.field : NONE
   fmt.pix.bytesperline : 640
   fmt.pix.sizeimage : 115790
   fmt.pix.colorspace : JPEG
   fmt.pix.priv : 1
-cut-

### video4linux device info [/dev/video1] ###
general info
VIDIOCGCAP
   name : «USB Camera (04fc:504a)»
   type : 0x1 [CAPTURE]
   channels : 1
   audios : 0
   maxwidth : 640
   maxheight : 480
   minwidth : 48
   minheight : 32

-cut-

в разных процессах одновременно вот это:

CvCapture* capture = cvCreateCameraCapture(201);
if(capture == NULL)
return 0;
IplImage* frame = NULL;
frame = cvQueryFrame(capture);

и вот это:

CvCapture* capture1 = cvCreateCameraCapture(200);
if(capture1 == NULL)
return 0;
IplImage *frame1 = NULL;
frame1 = cvQueryFrame(capture1);

работает. Но в одном процессе в лучшем случае мусор выводит :( Камеры исправно светодиоды зажигают.

Раньше опрос нескольких камер делался на калбеках http://tech.groups.yahoo.com/group/OpenCV/message/65975

а теперь что то я не пойму, толи камеры должны быть строго одинаковые изза багов opencv толи еще какие хитрости? :(

и v4l и v4l2 имеют одинаковый id

CV_CAP_ANY 0
CV_CAP_MIL 100
CV_CAP_VFW 200
CV_CAP_V4L 200
CV_CAP_V4L2 200
CV_CAP_FIREWIRE 300
CV_CAP_IEEE1394 300
CV_CAP_DC1394 300
CV_CAP_CMU1394 300

psv1967 ★★★★★ ()

Всем спасибо :) рабочая версия 2.2 собранная в /usr/local не имеет такой проблемы.

А у кого какое кол-во камер удалось заставить работать одновременно?

и как теперь узнавать сколько камер доступно, без cvcam?

psv1967 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.