Azzera filtri
Azzera filtri

Undefined function 'findScaleTransform' for input arguments of type 'double'. How to solve it?

1 visualizzazione (ultimi 30 giorni)
%%Rescale replacment video frame
% Load replacment video frame
videoFrame = step(video);
% Get replacement and reference dimensions
repDims = size(videoFrame(:,:,1));
refDims = size(referenceImage);
% Find transformation that scales video frame to replacmente image size, preserving aspect ratio
scaleTransform = findScaleTransform(refDims,repDims);
outputView = imref2d(size(referenceImage));
videoFrameScaled = imwarp(videoFrame, scaleTransform, 'OutputView', outputView);
figure(1)
imshowpair(referenceImage, videoFrameScaled, 'Montage');
i got this problem at this section, when i'm doing this tutorial:
any help will be appreciated.
thank you
  3 Commenti
dinesh92x
dinesh92x il 29 Mar 2017
Oh!! I have the same problem.If any body find solution please provide me. Why "findScaleTransform" is not working.??
jingshuig
jingshuig il 14 Dic 2018
HI,
I think "findScaleTransform" is a private function in the example.
I'v find a solution . May be useful.
function [scaleTransform ]= findScaleTransform(refDims,repDims)
scaleTransform=affine2d([repDims(1)/refDims(1) 0 0 ; 0 repDims(2)/refDims(2) 0 ;0 0 1]);
end
Add this function in the dir,and named "findScaleTransform.m"

Accedi per commentare.

Risposte (2)

S. Muhammad Hossein Mousavi
Please I have the same too.

jingshuig
jingshuig il 14 Dic 2018
HI,
I think "findScaleTransform" is a private function in the example.
I'v find a solution . May be useful.
function [scaleTransform ]= findScaleTransform(refDims,repDims)
scaleTransform=affine2d([repDims(1)/refDims(1) 0 0 ; 0 repDims(2)/refDims(2) 0 ;0 0 1]);
end
Add this function in the dir,and named "findScaleTransform.m"
  2 Commenti
jingshuig
jingshuig il 2 Gen 2019
add some new:
% 2019 01 02
%find transform
function [scaleTransform ]= findScaleTransform(refDims,repDims)
if (repDims(1)/repDims(2) > 1) && (refDims(2)/refDims(2) > 1) % When the ratio of length to width is the same
scaleTransform=affine2d([1/(repDims(1)/refDims(1)) 0 0 ; 0 1/(repDims(2)/refDims(2)) 0 ;0 0 1]);
else % When the ratio of length to width is different
scaleTransform=affine2d([0 1/(repDims(2)/refDims(1)) 0 ; 1/(repDims(1)/refDims(2)) 0 0 ;0 0 1]);
end
end
Dmytro
Dmytro il 19 Apr 2023
I think You have at least one mistake in the condition because Your (refDims(2)/refDims(2) > 1) always is false and You go to else case

Accedi per commentare.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by