Hi,
I have a problem when trying to load my camera calibration file with
ARToolKitPlus v. 2.1.1, as generated through the Two-steps procedure
described in ARToolKit (I use ARToolKit v. 2.72).
When I call TrackerMultiMarkerImpl::init() on my file, it generates an
error "Camera parameter load error!". I could somehow trackdown where the
problem comes from. In CameraImpl::loadFromFile() there is a check at the
end:
(line 97-104)
if( (mat[0][1] != 0.0) ||
(mat[0][3] != 0.0) ||
(mat[1][0] != 0.0) ||
(mat[1][3] != 0.0) ||
(mat[2][0] != 0.0) ||
(mat[2][1] != 0.0) ||
(mat[2][2] != 1.0) ||
(mat[2][3] != 0.0)) return(false);
I've output the values in my camera calibration file and they are:
848.412721 -1.764957 318.907748 0.000000
0.000000 863.909015 180.308469 0.000000
0.000000 0.000000 1.000000 0.000000
... so the mat[0][1] is -1.764957 which is != 0, so it returns false.
Anyhow here is what I want to know:
* How could that happen?
* Is this verification code right?
* Can I safely remove this verification code?
I thought that for camera calibration files, ARToolKit and ARToolKitPlus
were compatible. I don't have the same problem if I use the
Logitech4000.dat example, which yields the following matrix:
406.040394 0.000000 154.000000 0.000000
0.000000 404.388488 115.000000 0.000000
0.000000 0.000000 1.000000 0.000000
Thanks,
> Hi,
>
> I post this message on this list as I found a fix for a problem that I
> had and that I think other people might come upon. I couldn't find a fix
> on the web, so here it is.
>
> I have Linux Debian on an Intel, with NVIDIA video card and a Hauppauge
> Video capture card.
>
> The problem arise when I'm trying to calibrate my camera.
> When lauching calib_camera2, I first have a blue screen: I need to
> launch xawtv _after_ the calib_camera2 program. The problem is that when
> I first click on the image, an error message:
> error: videosync
>
> starts to print and I can't do anything.
>
> The trick was simply to comment out the following lines (582-585) in
> lib/SRC/VideoLinuxV4L/video.c:
> if(ioctl(vid->fd, VIDIOCSYNC, &vid->video_cont_num) < 0){
> printf("error: videosync\n");
> return NULL;
> }
>
> ie.
> // if(ioctl(vid->fd, VIDIOCSYNC, &vid->video_cont_num) < 0){
> // printf("error: videosync\n");
> // return NULL;
> // }
>
> I don't know exactly what this line checks for, but in my case
> commenting it out just closed the issue.
>
> Best,
>
>
> --
> J. S. Senécal
> http://drone.ws
>
>
>
|