derzu / BodySkeletonTracker

Human body skeleton detection an tracking from video camera in real time. It was developed for an Orbbec Astra camera DRGB (Depth-RGB), uses the OpenNI2 driver, it also works with Asus Xtion and Prime sense. It works with normal webcam too, in the case of background is smooth and white.
MIT License
123 stars 45 forks source link

make Error #8

Open hayoonko opened 6 years ago

hayoonko commented 6 years ago

hi, thanks you for your source code.

i try to make it, but /usr/bin/ld: cannot find -l64 error.

what is -l64? please help me !

derzu commented 6 years ago

Hi, I'm not sure, are you compiling on a Linux, is it 64 bits?

Send me the full make output.

Best regards,

Derzu.

hayoonko commented 6 years ago

yes, my os is both of ubuntu 16.04 and 14.04.

so i have trouble in ubuntu 16.04, but i change my os on ubuntu 14.04.

and another problem is image@image:~/xtion2/BodySkeletonTracker/Bin/x64-Release$ ./BodySkeletonTracker main::Compiled with Depth Couldn't open device DeviceOpen using default: no devices found

Compiled with Depth Wait failed! (timeout is 2000 ms) waitForStreams: timeout reached

Wait failed! (timeout is 2000 ms) waitForStreams: timeout reached

thanks you for your reply.

derzu commented 6 years ago

The depth camera was not detected.

Are you testing with a depth device like Orbbec Astra, or Asus Xtion, or Primesense? Did you installed the OpenNI2 driver?

hayoonko commented 6 years ago

yes,

i used Asus Xtion2. i installed OpenNI2 driver and then test SImpleViewer. not problem....

derzu commented 6 years ago

Did you run the source command? $ source ~/Downloads/OpenNI-Linux-x64-2.3/OpenNIDevEnvironment (set your path appropriately)

hayoonko commented 6 years ago

of course.

i don't understand why occur this error...

derzu commented 6 years ago

At the main.ccp file try to change: deviceURI = openni::ANY_DEVICE; to deviceURI = "/dev/yourdevice"

You need to discovery the /dev/ file of your device.

hayoonko commented 6 years ago

thanks you!

it work for me ! :)

but i try run ./BodySkeletonTracker image@image:~/xtion2/BodySkeletonTracker/Bin/x64-Release$ ./BodySkeletonTracker main::Compiled with Depth Video Camera at /dev/video1 Detected Depth Camera at /dev/video0 Detected

and then nothing happened ... (ex . any GUI)

derzu commented 6 years ago

Do you have any traditional webcam attached? If you are running at a notebook probably it will have a webcam. And webcam can be the /dev/video0. You said the SimpleViewer works for you, you can try to print the device string at it's code and verify if it is really the /dev/vide0 that is being used.

hayoonko commented 6 years ago

I am sorry that the answer is late. Currently my main.cpp is like this:

include "SampleViewer.h"

int main(int argc, char** argv) {

ifdef DEPTH

int rc = openni::STATUS_OK;
const char* deviceURI = "/dev/ASUS-depth" ;

else

int rc = 1;
const char* deviceURI = NULL;

endif

ifdef DEPTH

printf("main::Compiled with Depth\n");

else

printf("main::Compiled witout Depth\n");

endif

/*if (argc > 1)
{
    deviceURI = argv[1];
}*/
SampleViewer sampleViewer("Body Skeleton Tracker", "/dev/ASUS-depth");
rc = sampleViewer.init();

ifdef DEPTH

if (rc != openni::STATUS_OK)

else

if (rc != 0)

endif

{
    return 1;
}
sampleViewer.run();

}

I am using an xtion2 camera and the output of $ ls / dev / video is like this: image@image:~$ ls /dev/video /dev/video0 /dev/video1

Here is the output of $ ls / dev / *. /dev/ASUS-depth /dev/ram11 /dev/tty21 /dev/ttyS12 /dev/autofs /dev/ram12 /dev/tty22 /dev/ttyS13 /dev/btrfs-control /dev/ram13 /dev/tty23 /dev/ttyS14 /dev/console /dev/ram14 /dev/tty24 /dev/ttyS15 /dev/core /dev/ram15 /dev/tty25 /dev/ttyS16 /dev/cpu_dma_latency /dev/ram2 /dev/tty26 /dev/ttyS17 /dev/cuse /dev/ram3 /dev/tty27 /dev/ttyS18 /dev/ecryptfs /dev/ram4 /dev/tty28 /dev/ttyS19 /dev/full /dev/ram5 /dev/tty29 /dev/ttyS2 /dev/fuse /dev/ram6 /dev/tty3 /dev/ttyS20 /dev/hidraw0 /dev/ram7 /dev/tty30 /dev/ttyS21 /dev/hidraw1 /dev/ram8 /dev/tty31 /dev/ttyS22 /dev/hidraw2 /dev/ram9 /dev/tty32 /dev/ttyS23 /dev/hpet /dev/random /dev/tty33 /dev/ttyS24 /dev/hwrng /dev/rfkill /dev/tty34 /dev/ttyS25 /dev/i2c-0 /dev/rtc /dev/tty35 /dev/ttyS26 /dev/i2c-1 /dev/rtc0 /dev/tty36 /dev/ttyS27 /dev/i2c-2 /dev/sda /dev/tty37 /dev/ttyS28 /dev/i2c-3 /dev/sda1 /dev/tty38 /dev/ttyS29 /dev/i2c-4 /dev/sda2 /dev/tty39 /dev/ttyS3 /dev/i2c-5 /dev/sda5 /dev/tty4 /dev/ttyS30 /dev/i2c-6 /dev/sda6 /dev/tty40 /dev/ttyS31 /dev/kmsg /dev/sdb /dev/tty41 /dev/ttyS4 /dev/kvm /dev/sdb1 /dev/tty42 /dev/ttyS5 /dev/log /dev/sdb2 /dev/tty43 /dev/ttyS6 /dev/loop0 /dev/sdb3 /dev/tty44 /dev/ttyS7 /dev/loop1 /dev/sdb5 /dev/tty45 /dev/ttyS8 /dev/loop2 /dev/sdc /dev/tty46 /dev/ttyS9 /dev/loop3 /dev/sdc1 /dev/tty47 /dev/uhid /dev/loop4 /dev/sdc2 /dev/tty48 /dev/uinput /dev/loop5 /dev/sdc3 /dev/tty49 /dev/urandom /dev/loop6 /dev/sdc4 /dev/tty5 /dev/vcs /dev/loop7 /dev/sdc5 /dev/tty50 /dev/vcs1 /dev/loop-control /dev/sg0 /dev/tty51 /dev/vcs2 /dev/mcelog /dev/sg1 /dev/tty52 /dev/vcs3 /dev/media0 /dev/sg2 /dev/tty53 /dev/vcs4 /dev/media1 /dev/snapshot /dev/tty54 /dev/vcs5 /dev/mei0 /dev/stderr /dev/tty55 /dev/vcs6 /dev/mem /dev/stdin /dev/tty56 /dev/vcs7 /dev/memory_bandwidth /dev/stdout /dev/tty57 /dev/vcsa /dev/ndctl0 /dev/tty /dev/tty58 /dev/vcsa1 /dev/network_latency /dev/tty0 /dev/tty59 /dev/vcsa2 /dev/network_throughput /dev/tty1 /dev/tty6 /dev/vcsa3 /dev/null /dev/tty10 /dev/tty60 /dev/vcsa4 /dev/nvidia0 /dev/tty11 /dev/tty61 /dev/vcsa5 /dev/nvidiactl /dev/tty12 /dev/tty62 /dev/vcsa6 /dev/nvidia-modeset /dev/tty13 /dev/tty63 /dev/vcsa7 /dev/port /dev/tty14 /dev/tty7 /dev/vga_arbiter /dev/ppp /dev/tty15 /dev/tty8 /dev/vhci /dev/psaux /dev/tty16 /dev/tty9 /dev/vhost-net /dev/ptmx /dev/tty17 /dev/ttyprintk /dev/video0 /dev/ptp0 /dev/tty18 /dev/ttyS0 /dev/video1 /dev/ram0 /dev/tty19 /dev/ttyS1 /dev/zero /dev/ram1 /dev/tty2 /dev/ttyS10 /dev/ram10 /dev/tty20 /dev/ttyS11

Here is the output of the terminal $. / BodySkeletonTracker. image@image:~/xtion2/BodySkeletonTracker/Bin/x64-Release$ ./BodySkeletonTracker main::Compiled with Depth Video Camera at /dev/video1 Detected Depth Camera at /dev/video0 Detected

No video frame will appear on the output screen. I don't know why this problem occured.

derzu commented 6 years ago

I don't know what is the problem, maybe some driver issue, you can try to reinstall the OpenNI2 driver.

I think the best set for the deviceURI is: const char* deviceURI = openni::ANY_DEVICE;

Because of this way the initOpenNI() method try to find the correct device.