How to find the dimensions of a specific area in an existing image?

2 ビュー (過去 30 日間)
Alexander West
Alexander West 2019 年 4 月 9 日
コメント済み: Alexander West 2019 年 4 月 9 日
Say I'm given an image with a rectangular space made entirely of green pixels. I want to find the dimension of that area that is made entirely of green pixels.
This is what I have so far:
numGreenPixels=img(:,:,1)==0 & img(:,:,2)==255 & img(:,:,3)==0
numGreenPixels = sum(numGreenPixels(:));
this would only given me the total number of green pixels, when I need to find the dimension of said space. How do I go about this?
  2 件のコメント
KSSV
KSSV 2019 年 4 月 9 日
when I need to find the dimension of said space.
YOu can find the dimensions if you can arrange the data into a matrix form......is your green region a square/ rectangle? If it is taking some other irregular shape, how you will specify the dimensions?
Alexander West
Alexander West 2019 年 4 月 9 日
It is always a rectangle/square, sorry if I didn’t specify.

サインインしてコメントする。

回答 (1 件)

KSSV
KSSV 2019 年 4 月 9 日
編集済み: KSSV 2019 年 4 月 9 日
In that case......the length of unique of x,y should give you the dimensions. You have numGreenPixels as a matrix of 0 and 1's.
[y,x] = find(numGreenPixels) ;
If it is not clear attach your image.
  1 件のコメント
Alexander West
Alexander West 2019 年 4 月 9 日
function refrigerator(fridge,picNeed)
img=imread(picNeed)
background=imread(fridge);
r=(img(:,:,1))
g=(img(:,:,2))
b=(img(:,:,3))
numGreenPixels=img(:,:,1)==0 & img(:,:,2)==255 & img(:,:,3)==0
[y,x] = find(numGreenPixels) ;
background=imresize(background,[x,y])
[w,r] = strtok(fridge,'.')
newFile= ['decorated_' w r]
imwrite(img,newFile)
end
Doing this returns an error with the resize function? Logically, it should work right?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeRead, Write, and Modify Image についてさらに検索

タグ

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by