上の黒で書いた様な2値画像(内側は黒で塗りつぶされている)が手元にあります。またこれをcsvファイルとしても持っています。
a,b,cはリストになっており、座標は分かっています。
i=0⇒右の図
i=1⇒真ん中の図
i=2⇒左の図
a点
(a[2i],a[2i+1])
b点
(b[2i],b[2i+1])
上側のc点
(c[4i],c[4i+1])
下側のc点
(c[4i+2],c[4i+3])
また下記の条件も満たします。
a[2i+1] < c[4i+1]
b[2i+1] > c[4i+3]
a,bのx座標 > cのx座標
画像内の3つの粒子に対し、それぞれ線分a,c、線分b,cの傾きを最小2乗法で求めたいです。ただ、各線分を形成する輪郭部の全座標が分かれば、そこから自分で傾きを求められるので、座標の所得方法でもいいです。
言語はpythonで、winpythonをインストールしてあるので、OpenCVなども利用可能です。
私はcsvファイルをリストl[y][x]に格納して、例えば線分a,cについては、
python
1for h in range(a[2*i+1]): 2 y=c[4*i+1]+h 3 for u in range(c[4*i]): 4 x=a[2*i]+u 5 if l[y][x] == 0: 6 xy.append(x) 7 xy.append(y) 8 break
のようにして全座標を得ようとしました。
しかし、例えば輪郭の座標が、(100,80)(101,80)と並んでいる場合、(101,80)が検出できないことに気づき生きずまりました。
どうか解決方法をご教授下さい。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー