Omni-radtan one camera calibration Error: "No corners could be extracted for camera"

826 views
Skip to first unread message

whois...@gmail.com

unread,
Feb 28, 2016, 8:41:10 PM2/28/16
to kalibr-users
Hello,

I try to run an offline calibration with the kalibr, but I get the Error, that no corners could be extracted. What can be the issue ?
- to few images ?
- the timestamps are generated artificially, i.e. I used the example timstamp and incremented it, and named each image with a unique timestamp.


This is the kalibr output:
./cde-exec kalibr_calibrate_cameras --bag my.bag --topics /cam0/image_raw --models omni-radtan --target checkboard.yaml
importing libraries
the rosdep view is empty: call 'sudo rosdep init' and 'rosdep update'
Initializing cam0:
Camera model: omni-radtan
Dataset: my.bag
Topic: /cam0/image_raw
Number of images: 500
Extracting calibration target corners
Progress 500 / 500 Time remaining:
[FATAL] [1456709857.917938]: No corners could be extracted for camera /cam0/image_raw! Check the calibration target configuration and dataset.
Traceback (most recent call last):
File "/var/kalibr-build/devel/bin/kalibr_calibrate_cameras", line 5, in <module>
exec(fh.read())
File "<string>", line 444, in <module>
File "<string>", line 182, in main
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/CameraCalibrator.py", line 56, in initGeometryFromObservations
success = self.geometry.initializeIntrinsics(observations)
RuntimeError: [Exception] /var/kalibr-build/src/kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/OmniProjection.hpp:730: initializeIntrinsics() assert(observations.size() != 0) failed: Need min. one observation
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
ImportError: No module named apport.fileutils

Original exception was:
Traceback (most recent call last):
File "/var/kalibr-build/devel/bin/kalibr_calibrate_cameras", line 5, in <module>
exec(fh.read())
File "<string>", line 444, in <module>
File "<string>", line 182, in main
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/CameraCalibrator.py", line 56, in initGeometryFromObservations
success = self.geometry.initializeIntrinsics(observations)
RuntimeError: [Exception] /var/kalibr-build/src/kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/OmniProjection.hpp:730: initializeIntrinsics() assert(observations.size() != 0) failed: Need min. one observation


best,
Cristian

whois...@gmail.com

unread,
Mar 5, 2016, 8:38:49 PM3/5/16
to kalibr-users
solved it, the target calibration file was not filled out correctly, I considered the number of x and y squares, the exterior rows and cols, but you need the second row and col to get the right number of x and y squares.

msh...@umich.edu

unread,
Feb 19, 2019, 2:08:38 PM2/19/19
to kalibr-users
Hi Cristian,

I hope you are doing well. I have met the same problem that I get an error:
importing libraries
Initializing cam0:
Camera model: pinhole-equi
Dataset: /home/msy/frontend/data/2019-02-19-13-39-14.bag
Topic: /camera/color/image_raw
Number of images: 85
Extracting calibration target corners
Process Process-3:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
Process Process-4:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
Process Process-5:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
Process Process-6:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
Progress 6 / 85 Time remaining: 2s Process Process-7:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
Process Process-8:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions
Process Process-9:


Traceback (most recent call last):

File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_common/TargetExtractor.py", line 22, in multicoreExtractionWrapper
success, obs = detector.findTargetNoTransformation(stamp, np.array(image))
TypeError: Conversion is only valid for arrays with 1 or 2 dimensions. Argument has 3 dimensions

[FATAL] [1550602602.264270]: No corners could be extracted for camera /camera/color/image_raw! Check the calibration target configuration and dataset.


Traceback (most recent call last):
File "/var/kalibr-build/devel/bin/kalibr_calibrate_cameras", line 5, in <module>
exec(fh.read())
File "<string>", line 444, in <module>
File "<string>", line 182, in main
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/CameraCalibrator.py", line 56, in initGeometryFromObservations
success = self.geometry.initializeIntrinsics(observations)

RuntimeError: [Exception] /var/kalibr-build/src/kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/PinholeProjection.hpp:713: initializeIntrinsics() assert(observations.size() != 0) failed: Need min. one observation


Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 64, in apport_excepthook
from apport.fileutils import likely_packaged, get_recent_crashes
ImportError: No module named apport.fileutils

Original exception was:
Traceback (most recent call last):
File "/var/kalibr-build/devel/bin/kalibr_calibrate_cameras", line 5, in <module>
exec(fh.read())
File "<string>", line 444, in <module>
File "<string>", line 182, in main
File "/var/kalibr-build/src/kalibr/aslam_offline_calibration/kalibr/python/kalibr_camera_calibration/CameraCalibrator.py", line 56, in initGeometryFromObservations
success = self.geometry.initializeIntrinsics(observations)

RuntimeError: [Exception] /var/kalibr-build/src/kalibr/aslam_cv/aslam_cameras/include/aslam/cameras/implementation/PinholeProjection.hpp:713: initializeIntrinsics() assert(observations.size() != 0) failed: Need min. one observation

I'd appreciate it if you could specify which target calibration file is the one that you didn't fill out correctly? For me, I only used "april_6x6.yaml" which is directly downloaded from the git wiki. And my calibration board is exactly 6x6 tags.

Best,
Shenyu

cucu...@gmail.com

unread,
Mar 20, 2019, 9:47:25 PM3/20/19
to kalibr-users
Hi Shenyu,

I face the same error when using kalibr to calibrate my camera creating "yaml" file. Have you solved this yet?

Thank you very much!

Ray

Reply all
Reply to author
Forward
0 new messages