13カラフルなブロックの画像の情報をテキストに変換しようとしています。たとえば、ここで黄色と青のブロックの数とその順序を知る必要があります。Pythonを使用して2つの結合された配列の配列を整列する
"C:\ target.jpg"
"C:\ blue.jpg"
"C:\ yellow.jpg"
私の持っているもの次のとおりです。
import cv2
import numpy as np
img_rgb = cv2.imread("c:\\target.jpg")
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread('c:\\blue.jpg',0)
# template = cv2.imread('c:\\blue.jpg',0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = 0.99
loc = np.where (res >= threshold)
# if print loc
# (array([ 3, 31, 59, 87, 115, 143, 171, 199, 227, 255, 283, 311, 339], dtype=int64), array([7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], dtype=int64))
print str(loc[0] + loc[1])
私はそれらを個別に実行すると、それはこれらのような結果を与える:
[ 13 41 69 97 125 153 181 209 237 265 293 321 349]
と
[ 10 38 66 94 122 150 178 206 234 262 290 318 346]
さて、これらの各13個の数字ですが、私はどのように知りませんそれらを扱う。 "青、黄、青、黄、青、青、黄、黄、青、黄、青、黄、青、黄色の"
:私のようなテキストにそれらを有効にするにはどうすればよい
。
入力イメージは常にそのような単純な固定スタックですか、複数列、ミスアライメント、回転などの他のパターン? –
@John Zwinck、コメントいただきありがとうございます。ブロックの形状は常に単純で同じです。 –