我可以将.png图像保存为pic = imread(image_name)
,我可以将其视为包含大小的矩阵,以便我可以检索[nrows, ncols, ~] = size(pic)
。然后,我可以使用imshow(pic)
轻松显示此图像。
但是,如果我使用test = zeros(nrows, ncols, 3)
创建自己的矩阵,并尝试使用test(:, :, :) = pic
复制图片并尝试使用imshow(test)
,则无效。我可以逐个元素地比较test
和pic
它们是相同的,但是我不能减去这两个或者我得到错误
Error using -
Integers can only be combined with integers of the same class, or scalar doubles.
如何创建矩阵并将图像中的像素分配给它并仍然将矩阵视为图像?我试图这样做的原因是我有很多图片我试图组合成一个更大的图片,所以我需要预先创建一个大矩阵,然后将每个单独图像的像素复制到更大的矩阵,但这个更大的矩阵我使用imshow
或imwrite
时不再将其视为图片。
答案 0 :(得分:1)
错误告诉你你错过了什么。重要的是class
变量。图像有一些类类型(uint8,uint16 ...),matlab中的通用矩阵,除非另有说明double
。尝试定义
test = zeros(size(pic),class(pic));