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

回答編集履歴

2

装飾の修正

2017/10/21 02:13

投稿

退会済みユーザー
answer CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  *Alpha channelを合成するには、mask*255
17
17
  →`mask2 = mask2*255`の部分です
18
- *255なしで出力するとよく分かりますが、マスク画像は0か1かにしかなっておらず、これだとアルファチャンネルを混ぜてもほとんど見た目は変わりませんね。なので、int8に合わせて0か255にしないといけませんね。
18
+ `*255`なしで出力するとよく分かりますが、マスク画像は`0か1か`にしかなっておらず、これだとアルファチャンネルを混ぜてもほとんど見た目は変わりませんね。なので、`int8`に合わせて`0か255か`にしないといけませんね。
19
19
 
20
20
  ---
21
21
  投稿そのままだとループしてしまうので、必要なところだけ抜き出しました。

1

補足追加

2017/10/21 02:12

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,30 @@
1
+ まず結果はこれでよいですね。
2
+
3
+ |**woman.jpg**|**grabbed.jpg**|**alpha.png**|
4
+ |:--|:--:|--:|
5
+ |![イメージ説明](3d226717b9509509e6fde0f30f0c2f00.jpeg)|![イメージ説明](5d45e96407f394231201b9dd63609fe5.png)|![イメージ説明](ff8adbee2e81c3155ad68797591b1d58.png)|
6
+
7
+ ---
8
+
9
+ 大事なところは、
10
+ *Alpha channel付き画像は、PNGで出力(JPEGでは使えません)
11
+ →`cv2.imwrite("alpha.png",img_alpha)`の部分です
12
+
13
+ *Alpha channelを付加する際には、[b,g,r]に分割して[a]を付加
14
+ →`img_alpha = cv2.merge(img_bgr+[mask2])`の部分です
15
+
16
+ *Alpha channelを合成するには、mask*255
17
+ →`mask2 = mask2*255`の部分です
18
+ *255なしで出力するとよく分かりますが、マスク画像は0か1かにしかなっておらず、これだとアルファチャンネルを混ぜてもほとんど見た目は変わりませんね。なので、int8に合わせて0か255にしないといけませんね。
19
+
20
+ ---
21
+ 投稿そのままだとループしてしまうので、必要なところだけ抜き出しました。
22
+
1
23
  ```Python
2
24
  import numpy as np
3
25
  import cv2
4
26
 
5
- img = cv2.imread("woman.jpeg" )
27
+ img = cv2.imread("woman.jpg" )
6
28
  mask = np.zeros(img.shape[:2], np.uint8)
7
29
 
8
30
  bgdModel = np.zeros((1,65),np.float64)