我创建了(第一个)Matlab 类来存储图像序列。
当我将方法应用于类的实例时,根本没有设置类的属性。
classdef sequence
%% Properties %%
properties
images;
width;
height;
end
%% Methods %%
methods
%% Constuctor %%
function obj = sequence()
obj.images = {};
obj.width = -1;
obj.height = -1;
end
%% Others methods %%
function numberOfImages = getNumberOfImages(obj)
numberOfImages = length(obj.images);
end
function addImage(obj, imageToAdd)
numberOfImages = obj.getNumberOfImages();
obj.images{numberOfImages + 1} = imageToAdd;
if numberOfImages == 0
[h, w] = size(imageToAdd);
obj.height = h;
obj.width = w;
end
end
function image = getImage(obj, i)
image = obj.images{i};
end
end
end
我仔细按照Matworks文档,但我仍然不知道我的错误在哪里。
这是我为使用我的类而编写的代码:
%% Parameters %%
imageFilename1 = '../Data/Test/1.png';
imageFilename2 = '../Data/Test/2.png';
alpha = 50;
numberOfIterations = 50;
%% Read images %%
image1 = double(imread(imageFilename1));
image2 = double(imread(imageFilename2));
imageSequence = sequence();
imageSequence.addImage(image1);
imageSequence.addImage(image2);
我哪里错了?
最佳答案
您正在使用值类,因此对参数的更改不会更改实际对象。为了使其正常工作,您应该将第一行更改为:
classdef sequence < handle
这样就创建了一个handle类,你想怎么用就怎么用。
有关更多信息,您可以查看 this page
关于matlab - 无法设置Matlab类的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27422591/