当方,画像処理とか色々とやっています.
二値化画像aを読み込んでラベリングし,オブジェクトを見つけるようにしています.
例えば1番にラベル付けられている画像をobjとして読み込み,1番にラベル付けられている領域をobjとして取り出します.
a = sp.label(a)
obj = sp.find_objects(a[0])[1]
追記箇所
そうすると,この場合ですと
(slice(317L, 392L, None), slice(544L, 692L, None))
という出力が得られます
左が画像の縦方向の座標の上下端,右が画像の横方向の座標の左右端に相当します.
追記箇所終わり
追記及び修正箇所
この出力から文字等を消して数値のみ取り出したいのですが,Python2.7では
obj = str(obj).translate(None, "slice")
obj = str(obj).translate(None, "(")
obj = str(obj).translate(None, ")")
obj = str(obj).translate(None, "L")
obj = str(obj).translate(None, "[")
obj = str(obj).translate(None, "]")
obj = str(obj).translate(None, ",")
obj = str(obj).translate(None, "None")
obj = obj.split()
という処理をし,
[317, 392, 544, 692]
という出力を得ていました.
しかし,最近Python3.6に更新したらエラーを吐きました.
追記及び修正箇所終わり
エラーは
TypeError: translate() takes exactly one argument (2 given)
色々調べてみると,str.maketransとstr.translateを組み合わせればよいみたいなのですが,
table = str.maketrans({'slice': None, '(': None, ')': None, 'L': None, '[': None, ']': None, ',': None, 'None': None})
obj = str(obj).translate(table)
としたら,
ValueError: string keys in translate table must be of length 1
となりました.
どうすればいいでしょうか.
更に追記
正規表現を使えばいい,という回答もいただきましたが,
今度は
TypeError: expected string or bytes-like object
というエラーが出ます...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/17 16:02
2019/09/17 16:06
2019/09/17 21:56
2019/09/17 23:00 編集
2019/09/18 15:27