2012-03-04 62 views
6

Tôi đang cố gắng tìm kích thước của hình ảnh mà tôi đã tải vào MATLAB.Kích thước Matlab của hình ảnh

image=imread('text.jpg'); 
[x,y]=size(image); 

này trả lại lỗi:

Indexing cannot yield multiple results.

Liệu imread không đọc hình ảnh vào một mảng 2d, vì vậy mà cần phải có hai kích cỡ?

+0

Mã của bạn có vẻ ổn với tôi. Bạn đã thử sử dụng, giả sử, imfinfo để xem có gì trong tệp không? –

Trả lời

9

Có thể bạn đã xác định biến có tên là size trước mã này?

+0

Vâng, đó là nó! Xin lỗi vì không phát hiện ra sai lầm rõ ràng! Cảm ơn. – Joseph

3

Bạn phải sử dụng [height, width, colour_planes] = size(image); vì hình ảnh có 3 chiều. Kích thước thứ ba là số lượng mặt phẳng màu. Nếu bạn không cần giá trị này, bạn có thể thay thế ~ để bỏ qua nó.

+0

thứ nguyên thứ 3 là gì? – scord

+0

Màu sắc. Thứ nguyên thứ nhất là giá trị màu đỏ, thứ 2 là xanh lá cây và thứ 3 là blues – Alexander

-3

Bạn có thể thử này:

image=imread('text.jpg'); 
[x y]=size(image); 
+2

Mã này khác với mã trong câu hỏi như thế nào? – Daniel

1

Chỉ cần sử dụng whos này và nhấn Enter.

image=imread('text.jpg'); 
whos 
13

Đối với những người tìm kiếm để tìm kích thước của một hình ảnh trong matlab, không sử dụng:

[height, width] = size(image); 

Điều này là do các cửa hàng imread các giá trị RGB riêng (cho hình ảnh màu), dẫn đến một ma trận ba chiều.

Ví dụ: nếu bạn đã tải hình ảnh màu rộng 500p cao, 500p, điều này sẽ dẫn đến ma trận 500x200x3.

Kích thước cuộc gọi() theo cách này sẽ dẫn đến kích thước được 'cuộn lên' và báo cáo chiều cao là 500, nhưng chiều rộng là 600 (200 * 3).

Thay vào đó, sử dụng:

[height, width, dim] = size(image); 

sẽ trở về đúng giá trị của 500, 200, 3.

1

[x, y, z] = kích thước (hình ảnh); là chính xác. x và y sẽ cho chiều dài và chiều rộng của hình ảnh và z chỉ định màu sắc.

Hình ảnh kỹ thuật số bao gồm RGB để z sẽ là 3.

Các vấn đề liên quan