質問編集履歴

2

進捗の更新

2019/12/29 03:18

投稿

Nyankoy
Nyankoy

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- 0,255のmask画像から10pixel×10pixelの範囲が255である形をランダムに切り出すプログラムを作成したいと考えています。現在1pixel×1pixelの範囲が255である図形(点)をランダムに切り出す(その点のx座標y座標を求める)ことはできたのですがこれを10pixel×10pixelの範囲に変えるにはどうしたらよいのでしょうか?
1
+ 0,255のmask画像から10pixel×10pixelの範囲が255である正方形をランダムに切り出すプログラムを作成したいと考えています。現在1pixel×1pixelの範囲が255である図形(点)をランダムに切り出す(その点のx座標y座標を求める)ことはできたのですがこれを10pixel×10pixelの範囲に変えるにはどうしたらよいのでしょうか?
2
2
 
3
3
  ```python
4
4
 
@@ -17,3 +17,27 @@
17
17
  print(y)
18
18
 
19
19
  ```
20
+
21
+ 現在考えているのは以下のコードです。このコードでは10pixel×10pixelの範囲が255である正方形の中心の画素のその点のx座標y座標を求めています。しかしこの収縮処理は実行に時間がかかるという欠点があり、もう少し効率の良い方法があれば教えていただきたく思っています。また、コードがミスしていたらその点も教えていただけますでしょうか。
22
+
23
+ ```python
24
+
25
+ mask = cv2.imread('./mask.png',0)
26
+
27
+ kernel = np.ones((10,10),np.uint8)
28
+
29
+ mask = cv2.erode(mask,kernel,iterations = 1)
30
+
31
+ white = np.where(mask == 255)
32
+
33
+ white_rand = random.randint(0, len(white[0]))
34
+
35
+ x = white[0][white_rand]
36
+
37
+ y = white[1][white_rand]
38
+
39
+ print(x)
40
+
41
+ print(y)
42
+
43
+ ```

1

質問内容の具体化

2019/12/29 03:18

投稿

Nyankoy
Nyankoy

スコア15

test CHANGED
File without changes
test CHANGED
@@ -1,13 +1,19 @@
1
- 0,255のmask画像から255であるピクセルのx座標とy座標(行番号と列番号)をランダムに一つ出力するプログラムを作成したいと考えています。
2
-
3
- 調べているとpythonにはlist型行列から.enumerate(255)ることで座標をることできるといことは分かりました。.enumerateのうな形はarray型でもあるのでしょうか?
1
+ 0,255のmask画像から10pixel×10pixelの範囲が255である図形をランダムに切り出すプログラムを作成したいと考えています。現在1pixel×1pixel範囲が255である図形(点)をランダムに切り出(その点のx座標y座標求め)ことできたのですがこれを10pixel×10pixelの範囲に変えにはどうしたのでしょうか?
4
2
 
5
3
  ```python
6
4
 
7
5
  mask = cv2.imread('./mask.png',0)
8
6
 
9
- mask.enumerate(255)
7
+ white = np.where(mask == 255)
10
8
 
11
- # AttributeError: 'numpy.ndarray' object has no attribute 'enumerate'
9
+ white_rand = random.randint(0, len(white[0]))
10
+
11
+ x = white[0][white_rand]
12
+
13
+ y = white[1][white_rand]
14
+
15
+ print(x)
16
+
17
+ print(y)
12
18
 
13
19
  ```