Ошибка Matlab Неподдерживаемый тип данных изображения ‘struct’

#matlab

#matlab

Вопрос:

В настоящее время я работаю над matlab для проекта обработки изображений, и я просто снимаю изображение с помощью своей веб-камеры, сохраняю его, обрабатываю изображение с помощью преобразования Хафа, а затем пытаюсь сохранить его. Когда я использую функцию imwrite для преобразованного изображения, я получаю эту ошибку:

 ??? Error using ==> imwrite>validateSizes at 596
Unsupported image datatype 'struct'.

Error in ==> imwrite at 422
validateSizes(data);

Error in ==> findLine at 48
imwrite(tapes,fullImageFileName2);
  

Я действительно не знаю, что здесь происходит, но я использую функцию imwrite, когда изображение впервые снимается веб-камерой, и это сохраняется без ошибок. Это второй раз, когда я пытаюсь сохранить изображение, которое является преобразованным изображением, я получаю эту ошибку. У кого-нибудь есть идеи?

Пока это мой код:

 vidobj = videoinput('winvideo');
preview(vidobj);
pause(10);
snapshot = getsnapshot(vidobj);
fullImageFileName = fullfile(pwd, 'line.jpg');
imwrite(snapshot,fullImageFileName);
imagesc(snapshot);
imshow(snapshot);

%Load image
tape = imread('C:UsersMustafaDocumentsMATLABline.jpg');
%Displays the valid values for the Image Processing
iptsetpref ImshowBorder tight
imshow(tape)

%Segment by thresh holding
thresh1 = 100;
tapes = im2bw(tape, thresh1/255);
imshow(tapes)

%Clean up image
%Morphology to assist segmentation
tapes = bwareaopen(tapes,100);%area under 100 pixels
imshow(tapes)

%Clear objects touching the line
%suppresses structures that are lighter than their surroundings and that are connected        to the image border. 
%(In other words, use this function to clear the image border.)
%tapes = imclearborder(tapes, 26);
%imshow(tapes)

%Find tape
%Find all connected regions
[B,L] = bwboundaries(tapes, 'noholes');
numRegions = max(L(:));
imshow(label2rgb(L))


%Hough transform
[H, theta, rho] = hough(tapes);
peaks = houghpeaks(H, 2);
tapes = houghlines(tapes, theta, rho, peaks, 'FillGap', 50, 'MinLength', 30);



fullImageFileName2 = fullfile(pwd, 'linedetect.png');
imwrite(tapes,fullImageFileName2,'BitDepth',16);
  

Комментарии:

1. Нам нужна дополнительная информация, можете ли вы ввести whos tapes и сообщить, что там написано. (Похоже, что tapes это struct, поэтому также было бы неплохо показать, как вы создаете tapes .)

2. Я обновил свой код выше,

3. ленты = хаулайны (ленты, тета, rho, пики, ‘Интервал заполнения’, 50, ‘Минимальная длина’, 30);

4. после ввода ‘чьи ленты’, вот что я получаю: >> Размер имени чьих лент в байтах Атрибуты класса ленты 1×3 1120 struct

Ответ №1:

houghlines возвращает struct . Введите help houghlines , чтобы более детально понять, что представляет собой результат.

(Подсказка, это не изображение.)

В нижней части страницы справки для houghlines приведен пример того, что делать с выводом.