以下のような写真があり、Python で表示されるバグ (色/灰色の連続した塊) の数を数えたいと思います。どうすればこれを最もうまく行うことができますか?
これまでImageChops、SciPy、PILを見てきましたが、何を使用できる/すべきかわかりません...
私は使用できると思いますがndimage.gaussian_filter()
、scipy.ndimage.measurements.label()
後者を使用してガウス化された画像の青い点をカウントする方法はまだわかりません...次のようになります
わかった、
上の画像で、次のコードを取得しました。
#! /usr/bin/python
import numpy as np
import scipy
import pylab
import pymorph
import mahotas
from PIL import Image
import PIL.ImageOps
from scipy import ndimage
image = Image.open('bugs.jpg')
inverted_image = PIL.ImageOps.invert(image)
inverted_image.save('in_bugs.jpg')
dna = mahotas.imread('in_bugs.jpg')
#pylab.imshow(dna)
pylab.gray()
#pylab.show()
T = mahotas.thresholding.otsu(dna)
pylab.imshow(dna > T)
#pylab.show()
dnaf = ndimage.gaussian_filter(dna, 8)
T = mahotas.thresholding.otsu(dnaf)
pylab.imshow(dnaf > T)
#pylab.show()
labeled,nr_objects = ndimage.label(dnaf > T)
print nr_objects
pylab.imshow(labeled)
pylab.jet()
pylab.show()
問題は、これが 5 という数字を返すことです。これはそれほど悪いことではありませんが、もっと正確にする必要があります。2 つ見たいのです。これどうやってするの?ガウス フィルターを適用する前に画像をぼかすと効果がありますか?
手伝ってくれてありがとう!
ロン