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

質問編集履歴

3

日本語の修正

2017/07/24 22:30

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -55,7 +55,7 @@
55
55
 
56
56
  ```
57
57
  ###試したこと
58
- unit8部分unit16にしたり、thresholdを使おうとしましたが、うまくいかずに今に至ります。
58
+ OpenCV画像のビット数変えたり、thresholdを使おうとしましたが、うまくいかずに今に至ります。
59
59
 
60
60
  ###補足情報(言語/FW/ツール等のバージョンなど)
61
61
  Python3

2

説明の変更

2017/07/24 22:30

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,59 +1,58 @@
1
1
  ###前提・実現したいこと
2
- 色に色を加算して、色の混合をしようとしています。
2
+ 色に色を加算して、色の混合をしようとしています。Microsoft office付属のpicture managerの色の補正機能のようなことを、CUIにしたい、というのがわかりやすいでしょうか。
3
- ・目標: 桁あふれする場合には255で頭打ち
4
- ・最終目標:sinθかシグモイドのような関数を使って、値が飽和しないように補正量を調整
5
3
 
4
+ ・第一目標: 加算後に桁あふれする場合には255で頭打ち
5
+ ・第二目標:sinθかシグモイドのような関数を使って、値が飽和しないように補正量を調整
6
+
6
7
  ###発生している問題・エラーメッセージ
7
8
  色を加算したときに、255を超えると値がオーバーフローして値が異常になります。
8
- 具体的には、数学上では`255+1=256`なのですが、OpenCV上では`255+1=1`(8ビットで桁あふれするとでもいうのでしょうかとなります。
9
+ 具体的には、数学上では`255+1=256`なのですが、OpenCV上では`255+1=1`(8ビットで桁あふれます。
9
10
 
11
+ |生+0|生+32|生+64|生+128|
12
+ |:--|:--:|--:|--:|
10
- カラー画像の場合では、白いところが青や赤、緑になってしまうような状態です。[こちらの「平均画像」のうさぎさん](http://www.mwsoft.jp/programming/computer_vision_with_python/1_3_numpy.html)のような感じです。
13
+ |![](1cbc5d5aaf2765a82a89a63197ede858.png)|![生+32](4e9d44499b9774a1e62603de3f079ccf.png)|![生+64](2e42c10b9879ef817f0b6f0b95e9f1bb.png)|![生+128](15344975395d4770d1ec88b84fdf60e0.png)|
11
14
 
12
- 再現性あるコードを抜粋しましたので下記に添付します。
15
+ ###該当ソースコード
13
16
 
14
- ###該当のソースコード
15
17
  ```Python
16
18
  # -*- coding: utf-8 -*-
17
19
  import cv2
18
20
  import numpy as np
19
21
 
20
- # Image size (origin)
22
+ FILENAME ="lenna.png"
21
- img_size = 10
22
23
 
24
+ def generate_image(path,b,g,r):
23
- # Color overflow test
25
+ # Load image
24
- img_1 = np.ones((img_size, img_size), np.uint8) * 1
26
+ img = cv2.imread(path, cv2.IMREAD_COLOR)
27
+ #cv2.imshow("img",img)
28
+ #cv2.waitKey(0)
25
29
 
26
- # 1 BLACK
27
- cv2.imshow("img_1",img_1)
28
- print("---")
29
- print("img_1")
30
- print(img_1)
30
+ # Split image
31
- cv2.waitKey(0)
31
+ img_b, img_g, img_r = cv2.split(img)
32
32
 
33
- # 1 WHITE
34
- img_255 = np.ones((img_size, img_size), np.uint8) * 255
35
- cv2.imshow("img_255",img_255)
36
- print("---")
33
+ # Add required value
37
- print("img_255")
38
- print(img_255)
34
+ img_b = img_b + b
39
- cv2.waitKey(0)
35
+ img_g = img_g + g
36
+ img_r = img_r + r
40
37
 
41
- # 255 BLACK : OVERFLOW
38
+ # Merge each cannels
42
- img_256 = img_1 + img_255
39
+ img = cv2.merge([img_b, img_g, img_r])
43
- cv2.imshow("img_256",img_256)
44
- print("---")
45
- print("img_256")
46
- print(img_256)
47
- cv2.waitKey(0)
48
40
 
49
- # 384 GRAY
50
- img_384 = img_256 + 128
51
- print("---")
52
- print("384")
53
- cv2.imshow("img_384",img_384)
41
+ #cv2.imwrite("test.png",img)
54
- print(img_384)
42
+ return img
55
- cv2.waitKey(0)
56
43
 
44
+ def show_image(path,b,g,r):
45
+ img = generate_image(FILENAME,b,g,r)
46
+ cv2.imshow("B:%s G:%s R:%s"%(b,g,r),img)
47
+ cv2.waitKey(0)
48
+
49
+
50
+ if __name__ == "__main__":
51
+ show_image(FILENAME,0,0,0)
52
+ show_image(FILENAME,32,32,32)
53
+ show_image(FILENAME,64,64,64)
54
+ show_image(FILENAME,128,128,128)
55
+
57
56
  ```
58
57
  ###試したこと
59
58
  unit8の部分をunit16にしたり、thresholdを使おうとしましたが、うまくいかずに今に至ります。

1

不要項目の削除

2017/07/24 22:13

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -11,10 +11,6 @@
11
11
 
12
12
  再現性のあるコードを抜粋しましたので下記に添付します。
13
13
 
14
- ```
15
- エラーメッセージ
16
- ```
17
-
18
14
  ###該当のソースコード
19
15
  ```Python
20
16
  # -*- coding: utf-8 -*-