回答編集履歴

3

微修正

2019/11/22 08:31

投稿

fana
fana

スコア12151

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  その場合,ある行の画素のデータは,
14
14
 
15
- [B][G][R][B][G][R][B][G][R]...
15
+ [B0][G0][R0][B1][G1][R1][B2][G2][R2]...
16
16
 
17
17
  という並び(ここで1つの[]が1byteだと思ってください)になっています.
18
18
 
@@ -20,6 +20,6 @@
20
20
 
21
21
  これを(無理矢理)intとして読み取ろうとしているので,(intのサイズが4byteだとしたら)
22
22
 
23
- [B][G][R][B] [G][R][B][G] [R][B][G][R] ...
23
+ [B0][G0][R0][B1] [G1][R1][B2][G2] [R2][B3][G3][R3] ...
24
24
 
25
- という形で4byte毎intと解釈した値になってしまっています.
25
+ という形で4byte毎のメモリ内容をintとして解釈した値になってしまっています.

2

補足

2019/11/22 08:31

投稿

fana
fana

スコア12151

test CHANGED
@@ -1,3 +1,25 @@
1
1
  * グレースケール画像ならば IMREAD_GRAYSCALE を指定して8bit1chとして読み込んではどうでしょう.
2
2
 
3
3
  * そのうえで,`tget_line[x]=gray.at<int>(y,x)`の部分は,`gray.at<unsigned char>(y,x)`としてはどうでしょうか.
4
+
5
+
6
+
7
+ ---
8
+
9
+
10
+
11
+ 現状では,画像は 8bit3ch として読み込まれていると思います.
12
+
13
+ その場合,ある行の画素のデータは,
14
+
15
+ [B][G][R][B][G][R][B][G][R]...
16
+
17
+ という並び(ここで1つの[]が1byteだと思ってください)になっています.
18
+
19
+ 1画素の情報が3byteです.
20
+
21
+ これを(無理矢理)intとして読み取ろうとしているので,(intのサイズが4byteだとしたら)
22
+
23
+ [B][G][R][B] [G][R][B][G] [R][B][G][R] ...
24
+
25
+ という形で4byte毎にintと解釈した値になってしまっています.

1

文章のつながりをより明確化

2019/11/22 08:27

投稿

fana
fana

スコア12151

test CHANGED
@@ -1,3 +1,3 @@
1
1
  * グレースケール画像ならば IMREAD_GRAYSCALE を指定して8bit1chとして読み込んではどうでしょう.
2
2
 
3
- * で,`tget_line[x]=gray.at<int>(y,x)`の部分は,`gray.at<unsigned char>(y,x)`としてはどうでしょうか.
3
+ * そのうえで,`tget_line[x]=gray.at<int>(y,x)`の部分は,`gray.at<unsigned char>(y,x)`としてはどうでしょうか.