teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

詳細を更に追記,一部修正

2019/09/17 16:44

投稿

ichi_
ichi_

スコア15

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,15 @@
6
6
  a = sp.label(a)
7
7
  obj = sp.find_objects(a[0])[1]
8
8
 
9
+ **追記箇所**
10
+ そうすると,この場合ですと
11
+ (slice(317L, 392L, None), slice(544L, 692L, None))
12
+ という出力が得られます
13
+ 左が画像の縦方向の座標の上下端,右が画像の横方向の座標の左右端に相当します.
14
+ **追記箇所終わり**
15
+
16
+ **追記及び修正箇所**
9
- この領域の数値取り出したいのですが,Python2.7から3.6へ移行したら,次の書き方をしていたところエラーが出るようになりました.
17
+ この出力から文字等を消して数値のみ取り出したいのですが,Python2.7で
10
18
 
11
19
  obj = str(obj).translate(None, "slice")
12
20
  obj = str(obj).translate(None, "(")
@@ -16,6 +24,12 @@
16
24
  obj = str(obj).translate(None, "]")
17
25
  obj = str(obj).translate(None, ",")
18
26
  obj = str(obj).translate(None, "None")
27
+ obj = obj.split()
28
+ という処理をし,
29
+ [317, 392, 544, 692]
30
+ という出力を得ていました.
31
+ しかし,最近Python3.6に更新したらエラーを吐きました.
32
+ **追記及び修正箇所終わり**
19
33
 
20
34
  エラーは
21
35
  TypeError: translate() takes exactly one argument (2 given)
@@ -31,4 +45,10 @@
31
45
 
32
46
  となりました.
33
47
 
34
- どうすればいいでしょうか.
48
+ どうすればいいでしょうか.
49
+
50
+ **更に追記**
51
+ 正規表現を使えばいい,という回答もいただきましたが,
52
+ 今度は
53
+ TypeError: expected string or bytes-like object
54
+ というエラーが出ます...

1

詳細を記載

2019/09/17 16:44

投稿

ichi_
ichi_

スコア15

title CHANGED
@@ -1,1 +1,1 @@
1
- Python2.7から3.xへ移行した際のstr.translateの違
1
+ Python3.xstr.maketransとstr.translateを使たいがどうしてもエラーが出る
body CHANGED
@@ -1,13 +1,21 @@
1
+ 当方,画像処理とか色々とやっています.
2
+ 二値化画像aを読み込んでラベリングし,オブジェクトを見つけるようにしています.
3
+
4
+ 例えば1番にラベル付けられている画像をobjとして読み込み,1番にラベル付けられている領域をobjとして取り出します.
5
+
6
+ a = sp.label(a)
7
+ obj = sp.find_objects(a[0])[1]
8
+
1
- Python2.7から3.6へ移行したら,次の書き方をしていたところでエラーが出るようになりました.
9
+ この領域の数値を取り出したいのですが,Python2.7から3.6へ移行したら,次の書き方をしていたところでエラーが出るようになりました.
2
10
 
3
11
  obj = str(obj).translate(None, "slice")
4
- obj = str(obj).translate(None, "(")
12
+ obj = str(obj).translate(None, "(")
5
- obj = str(obj).translate(None, ")")
13
+ obj = str(obj).translate(None, ")")
6
- obj = str(obj).translate(None, "L")
14
+ obj = str(obj).translate(None, "L")
7
- obj = str(obj).translate(None, "[")
15
+ obj = str(obj).translate(None, "[")
8
- obj = str(obj).translate(None, "]")
16
+ obj = str(obj).translate(None, "]")
9
- obj = str(obj).translate(None, ",")
17
+ obj = str(obj).translate(None, ",")
10
- obj = str(obj).translate(None, "None")
18
+ obj = str(obj).translate(None, "None")
11
19
 
12
20
  エラーは
13
21
  TypeError: translate() takes exactly one argument (2 given)