在 Matlab 中使用 images.internal.imageDisplayParsePVPairs 时出错

Error using images.internal.imageDisplayParsePVPairs in Matlab

我正在尝试 运行 this code 以扭曲图像,但我无法 运行 在 Matlab R2018b 上正确地 运行并得到以下错误:

>> captureWarpPoints('man11.jpg');
Error using images.internal.imageDisplayParsePVPairs (line 71)
The parameter, notruesize, is not recognized by imageDisplayParsePVPairs

Error in images.internal.imageDisplayParseInputs (line 69)
[common_args,specific_args] = images.internal.imageDisplayParsePVPairs(varargin{:});

Error in imshow (line 245)
    images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});

Error in captureWarpPoints>updateRef (line 133)
        refImgHandle = imshow(modRefImage, 'notruesize');

Error in captureWarpPoints (line 29)
updateRef(1, refImage, refPoints)

注意:我安装了图像处理工具包。这是 source code.

如何正确运行这段代码?

很久以前 imshow 可能有一个额外的选项可以将 truesize 作为字符串参数调用。它不再具有该语法。而是单独调用 truesize。即替换

imshow(I, 'truesize'); 

imshow(I);
truesize;

或者您可以简单地删除参数并手动将大小调整为您需要的大小。

实际上,必须更改这些行才能 运行 代码正确:

captureWarpPoints.m中的第 17 行必须改为:

iptsetpref('ImshowBorder', 'tight'); % 'iptsetpref' must be lowercase not uppercase

captureWarpPoints.m中的第36行必须改为:

capImgHandle = imshow(capImage, 'InitialMagnification', 'fit');

captureWarpPoints.m 中的第 133 行必须更改为:

refImgHandle = imshow(modRefImage, 'InitialMagnification', 'fit');

warpImage.m中的第26行必须改为:

displaceY = griddata(x, y, zy, xi', yi);