質問編集履歴

4

文章の修正

2021/12/15 08:44

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
  そのまんまなのですが、明るい画像の場合の値の画像を反転し、暗い画像の場合と同様に処理してから、もう一度反転して、値の画像を使用している場合は再結合する方法がわかりません。
10
10
 
11
+
12
+
11
- 調べても、ネガポジ反転出てきてしまい、どうすればいいのかわかりません。
13
+ **今は再結合の方法がわかりません。**
14
+
15
+
12
16
 
13
17
  どなたか教えてください。お願い致します。
14
18
 
@@ -102,11 +106,7 @@
102
106
 
103
107
  しかし、どこでどうやって再結合すればいいのかわかりません。
104
108
 
105
- 「新しい明度チャンネルを元の色相と彩度チャンネルに合成」の後に反転したのですが、ここであっているのかも不安です。
106
109
 
107
- 理由は、反転した後の値を合成しているのでそれを元に戻すだけなので、あっていると思います。
108
-
109
- しかし、どこで再結合すればいいのかがわかりません。
110
110
 
111
111
  ```python
112
112
 

3

追記

2021/12/15 08:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -90,21 +90,35 @@
90
90
 
91
91
 
92
92
 
93
- [OpenCVで画像の色反転をしてみた](https://qiita.com/kenfukaya/items/245122eb312cdb6ba389)今は、こちらのサイトを試しています。
93
+ **追記**
94
94
 
95
+ プログラムを間違えており、サイトに載っているプログラムをそのまんま使用したらできたのですが、
96
+
97
+ > 暗い画像の場合と同様に処理してから、もう一度反転して、値の画像を使用している場合は再結合します。
98
+
99
+
100
+
101
+ とあるのですが、暗い画像と同様に処理した後、もう一度反転しました。
102
+
103
+ しかし、どこでどうやって再結合すればいいのかわかりません。
104
+
105
+ 「新しい明度チャンネルを元の色相と彩度チャンネルに合成」の後に反転したのですが、ここであっているのかも不安です。
106
+
95
- した結果、以下様なプログラム組んだのですが黒な画像になっしまいました
107
+ 理由は、反転した合成しているのでそれを元に戻すけなので、っていると思い
108
+
109
+ しかし、どこで再結合すればいいのかがわかりません。
96
110
 
97
111
  ```python
98
112
 
99
113
  #色の反転
100
114
 
101
- image2 = cv2.bitwise_not(img)
115
+ img = cv2.bitwise_not(img)
102
116
 
103
117
 
104
118
 
105
119
  # imgをHSVに変換
106
120
 
107
- hsv = cv2.cvtColor(image2, cv2.COLOR_BGR2HSV)
121
+ hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
108
122
 
109
123
  hue, sat, val = cv2.split(hsv)
110
124
 
@@ -122,26 +136,32 @@
122
136
 
123
137
 
124
138
 
125
- x = np.arange(256)
139
+ #明度チャンネルにガンマ補正を行う
126
140
 
127
- y = (x / 255) ** gamma * 255
141
+ val_gamma = np.power(val, gamma).clip(0,255).astype(np.uint8)
142
+
143
+
128
144
 
129
145
 
130
146
 
131
- # 変換る。
147
+ #新しい明度チャンネルを元の色相と彩度チャンネルに合成しま
132
148
 
133
- image3 = cv2.LUT(image2, y)
149
+ hsv_gamma = cv2.merge([hue, sat, val_gamma])
150
+
151
+ img_gamma2 = cv2.cvtColor(hsv_gamma, cv2.COLOR_HSV2BGR)
134
152
 
135
153
 
136
154
 
137
155
  #色の反転
138
156
 
139
- dst1 = cv2.bitwise_not(image3)
157
+ img_gamma2 = cv2.bitwise_not(img_gamma2)
158
+
159
+
140
160
 
141
161
 
142
162
 
143
163
  #書き込み
144
164
 
145
- cv2.imwrite(sys.argv[2],dst1)
165
+ cv2.imwrite(sys.argv[2],img_gamma2)
146
166
 
147
167
  ```

2

やってみた

2021/12/15 08:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -11,10 +11,6 @@
11
11
  調べても、ネガポジ反転が出てきてしまい、どうすればいいのかわかりません。
12
12
 
13
13
  どなたか教えてください。お願い致します。
14
-
15
-
16
-
17
- [OpenCVで画像の色反転をしてみた](https://qiita.com/kenfukaya/items/245122eb312cdb6ba389)今は、こちらのサイトを試しています。
18
14
 
19
15
  ```pyrhon
20
16
 
@@ -91,3 +87,61 @@
91
87
  cv2.imwrite('lioncuddle1_gamma2.jpg', img_gamma2)
92
88
 
93
89
  ```
90
+
91
+
92
+
93
+ [OpenCVで画像の色反転をしてみた](https://qiita.com/kenfukaya/items/245122eb312cdb6ba389)今は、こちらのサイトを試しています。
94
+
95
+ 試した結果、以下の様なプログラムを組んだのですが、真っ黒な画像になってしまいました。
96
+
97
+ ```python
98
+
99
+ #色の反転
100
+
101
+ image2 = cv2.bitwise_not(img)
102
+
103
+
104
+
105
+ # imgをHSVに変換
106
+
107
+ hsv = cv2.cvtColor(image2, cv2.COLOR_BGR2HSV)
108
+
109
+ hue, sat, val = cv2.split(hsv)
110
+
111
+
112
+
113
+ # gammaの計算 = log(mid*255)/log(mean)
114
+
115
+ mid = 0.5
116
+
117
+ mean = np.mean(val)
118
+
119
+ gamma = math.log(mid*255)/math.log(mean)
120
+
121
+ print(gamma)
122
+
123
+
124
+
125
+ x = np.arange(256)
126
+
127
+ y = (x / 255) ** gamma * 255
128
+
129
+
130
+
131
+ # 変換する。
132
+
133
+ image3 = cv2.LUT(image2, y)
134
+
135
+
136
+
137
+ #色の反転
138
+
139
+ dst1 = cv2.bitwise_not(image3)
140
+
141
+
142
+
143
+ #書き込み
144
+
145
+ cv2.imwrite(sys.argv[2],dst1)
146
+
147
+ ```

1

やっていること

2021/12/14 02:30

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -11,6 +11,10 @@
11
11
  調べても、ネガポジ反転が出てきてしまい、どうすればいいのかわかりません。
12
12
 
13
13
  どなたか教えてください。お願い致します。
14
+
15
+
16
+
17
+ [OpenCVで画像の色反転をしてみた](https://qiita.com/kenfukaya/items/245122eb312cdb6ba389)今は、こちらのサイトを試しています。
14
18
 
15
19
  ```pyrhon
16
20