필터 지우기
필터 지우기

[S.Area] not supported for code generation

조회 수: 2 (최근 30일)
tsai kai shung
tsai kai shung 2017년 10월 26일
댓글: Walter Roberson 2017년 10월 27일
hey guides i use this function on the simulink but show the error:Referencing a component from array of non-scalar values is not supported for code generation.
Function 'MATLAB Function' (#35.204.212), line 8, column 25:
"[S.Area]"
Launch diagnostic report.
what can replace this to success simulation on simulink.
function y = areaimg(u)
bw2 = zeros(240,320);
ss = 20;
B = 6000;
img_bw2 = bwareaopen(u,ss,8);
[L2,num2]=bwlabel(img_bw2,8);
S = regionprops(L2,'Area');
bw2 = ismember(L2, find([S.Area] < B));
y = bw2;
end

채택된 답변

Walter Roberson
Walter Roberson 2017년 10월 26일
편집: Walter Roberson 2017년 10월 26일
Just loop. You are generating code anyhow, so the loop should be efficient.
Have you considered using bwareafilt() instead ?
  댓글 수: 6
tsai kai shung
tsai kai shung 2017년 10월 27일
thanks for your help. by the way the false(size(L2))=zeros(size(L2))?
Walter Roberson
Walter Roberson 2017년 10월 27일
false() and zeros() are not the same: false() creates an array of type logical and zeros() creates an array of type double.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Image Analyst
Image Analyst 2017년 10월 27일
What is num2? Is it 0, and therefore S is empty? If S is empty, then trying to access S.Area would throw an error.

Image Analyst
Image Analyst 2017년 10월 27일
The whole function can be done with this single line of code
y = bwareafilt(u, [1, 6000]);
  댓글 수: 2
tsai kai shung
tsai kai shung 2017년 10월 27일
but this function not use on the simulink
tsai kai shung
tsai kai shung 2017년 10월 27일
what function can replace?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Computer Vision with Simulink에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!