Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
! mozi-koodo: EUC
! 05/11/15版
! 適当な3色だけで描かれた画像の中の、それぞれの色の部分の面積比
! などを求める。
! 例えば木橋の写真で、木部材の橋全体に占める割合や
! 木橋の全景に占める割合を求める場合は、まず、
! 橋の部分を切り出して背景白の画像に貼り付け、
! 木部材の部分を赤一色で塗りつぶし、その他の部材を黒一色で
! 塗りつぶした画像を ppm のアスキー形式で保存したものを
! senyuu < hoge.ppm
! のように入力する。
! ----------------------------------------
! 但し、プログラムのデータ入力部分は、
! ppmファイルの各行のデータの個数がどういうふうになっているかに
! 応じて、書き換えなければならない。
! 以下は、GIMPでアスキー形式のppmフォーマットで保存したファイル
! (RGBデータが1行に1個ずつ書き込まれている)からの読み込みに対応させた例
!
program senyuug
implicit real*8 (a-h, o-z)
dimension rgb3(3900000)
character p3*2,mozi*44
read(*,100) p3
100 format(a2)
write(*,*) ' マジックナンバー:',p3
read(*,*) mozi
read(*,*) m,n
write(*,*) ' 幅:',m
write(*,*) ' 高さ:',n
mn=m*n
read(*,*) max
write(*,*) ' 最大値:',max
do i=1,mn
read(*,*) rgb3((i-1)*3+1)
read(*,*) rgb3((i-1)*3+2)
read(*,*) rgb3((i-1)*3+3)
end do
!
moku=0
nhoka=0
nzenbu=0
!
do i=1,mn
nr=rgb3(3*i-2)
ng=rgb3(3*i-1)
nb=rgb3(3*i)
! 木部材のRGB階調値を指定
if((nr.eq.150).and.(ng.eq.0).and.(nb.eq.0)) then
moku=moku+1
end if
! その他部材のRGB階調値を指定
if((nr.eq.0).and.(ng.eq.0).and.(nb.eq.0)) then
nhoka=nhoka+1
end if
end do
!
write(*,*) ' 全ピクセル数:',mn
write(*,*) ' 木部材ピクセル数:',moku
write(*,*) ' その他部材ピクセル数:',nhoka
nhasi=moku+nhoka
write(*,*) ' 橋全体のピクセル数:',nhasi
write(*,200) ' 木部材/橋全体:',real(moku)/real(nhasi)
write(*,200) ' 橋/全景:',real(nhasi)/real(mn)
write(*,200) ' 木部材/全景:',real(moku)/real(mn)
200 format(a, f5.3)
end
!