まず、このサイトから既に得たすべての回答に感謝します。
私は OpenCV を初めて使用しますが、この素晴らしいツールでの作業を本当に楽しんでいます。私が構築しようとしているのは、誰かが空白の紙に書いている内容のストップ モーション シーケンスを作成するアプリケーションです。トリッキーな部分は、ライターの手がテキストの前にある画像を保存したくないということです。
過去 2 週間、私は Python と OpenCV 2 を使用してこのアプリケーションを開発してきました。テキストのみを表示するためのパースペクティブの変更と簡単な画像調整は既に処理済みです (このブログに感謝します: http://opencvpython.blogspot.com. br/であり、数独ソルバーの例です)。私の最新の成果は、手が画像の前にあるかどうかを検出することでした. cv2.threshold と cv2.countNonZero を使用して、画像に黒いピクセルが多すぎるかどうかを確認しました. 、これにアプローチする方法についてより良い考えを持っている人はいますか?) したがって、基本的に、ライターがページから手を離すと画像が保存され、手がページの上にある場合は保存されません。
私の次のアイデアは、同じロジックをページのセクションに適用することでした。次に例を示します。
- 空白ページから始まり、画像全体が保存されます
- ページの左半分に文章を書き終え、ページの右半分に手を置くと、新しく保存された画像は、古い右半分とマージされた新しい左半分になります (手が邪魔になるため)
- 上半身も下半身も同じ論理
- 後で、このロジックを 4 つの部分だけではなく、ページ上のグリッドに拡張します。
これは私がこれまでに得たものであり、画像を配列として見ることに問題があるため、明らかに機能していません
p=2 #number of pieces accross page, starting with 2
w=width/p
h=height/p
new_img = [] #new image
for y in range(np.size(firstimage,0),h):
for x in range(np.size(firstimage,1),w):
old_part = firstimage[y:y+h,x:x+w]
new_part = newimage[y:y+h,x:x+w]
if (countBlackPixels(new_part) < int((countBlackPixels(old_part))*5 )):
new_img = new_img + new_part
else:
new_img = new_img + old_part
new_img = new_img.astype(np.float32)
誰かがこの繰り返しを行い、他の部分で新しいイメージを構築する方法を手伝ってもらえますか?
ありがとう!