Operands to the || and && operators must be convertible to logical scalar values
이전 댓글 표시
I am using the stereo calibrator app to calibrate my camera I am using 10 pair of images from my stereo cam setup and giving them as an input in the app. It is generating the stereoParams object which has all the intrinsic and extrinsic matrices that are required, but also at the same time it is also saying a warning in the command prompt
Warning: JPEG library error (8 bit), "Premature end of JPEG file"."
And when i am trying to rectify a image from the stereo cam using the following code:
[J1, J2] = rectifyStereoImages(I1, I2, stereoParams);
It is showing the following error
Operands to the and && operators must be convertible to logical scalar values
Error in vision.internal.calibration.CameraParametersImpl/getValidBounds (line 883)
if isempty(coder.target) && (left > right || top > bot)
Error in vision.internal.calibration.CameraParametersImpl/computeUndistortBounds
(line 785)
[xBounds, yBounds] = getValidBounds(this, undistortedMask, ...
Error in vision.internal.calibration.StereoParametersImpl/computeOutputBounds (line 371)
[xBoundsUndistort1, yBoundsUndistort1] = ...
Error in
vision.internal.calibration.StereoParametersImpl/computeRectificationParameters
(line 271)
[xBounds, yBounds] = computeOutputBounds(this, imageSize, ...
Error in vision.internal.calibration.StereoParametersImpl/rectifyStereoImagesImpl
(line 190)
[H1, H2, Q, xBounds, yBounds] = ...
Error in rectifyStereoImages (line 99)
rectifiedImage1, rectifiedImage2] = rectifyStereoImagesImpl(stereoParams, ...
How do i remove both the the warning and the error???
댓글 수: 2
Walter Roberson
2015년 7월 20일
The warning about premature end of JPEG: at what point is that occurring?
What is size(stereoParams) and class(stereoParams) as well?
Newman
2015년 7월 21일
채택된 답변
추가 답변 (1개)
the cyclist
2015년 7월 20일
I am guessing that in the line
if isempty(coder.target) && (left > right || top > bot)
that one or more of those variables are vectors or matrices. The && and operators can only be used when the arguments (e.g. "left > right") evaluate to a scalar -- a single value, not a vector. The reason is that these "short-circuit" operators need a single condition to evaluate, not a vector of conditions.
댓글 수: 2
Newman
2015년 7월 20일
the cyclist
2015년 7월 20일
I have to admit that that is a mystery to me. Are you calling the function with the correct data type inputs?
Perhaps you could use debug mode to go inside the function and see more specifically where this goes wrong.
카테고리
도움말 센터 및 File Exchange에서 Calibrate Cameras에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
