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

回答編集履歴

3

微修正

2019/11/22 08:31

投稿

fana
fana

スコア12236

answer CHANGED
@@ -5,9 +5,9 @@
5
5
 
6
6
  現状では,画像は 8bit3ch として読み込まれていると思います.
7
7
  その場合,ある行の画素のデータは,
8
- [B][G][R][B][G][R][B][G][R]...
8
+ [B0][G0][R0][B1][G1][R1][B2][G2][R2]...
9
9
  という並び(ここで1つの[]が1byteだと思ってください)になっています.
10
10
  1画素の情報が3byteです.
11
11
  これを(無理矢理)intとして読み取ろうとしているので,(intのサイズが4byteだとしたら)
12
- [B][G][R][B] [G][R][B][G] [R][B][G][R] ...
12
+ [B0][G0][R0][B1] [G1][R1][B2][G2] [R2][B3][G3][R3] ...
13
- という形で4byte毎intと解釈した値になってしまっています.
13
+ という形で4byte毎のメモリ内容をintとして解釈した値になってしまっています.

2

補足

2019/11/22 08:31

投稿

fana
fana

スコア12236

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

1

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

2019/11/22 08:27

投稿

fana
fana

スコア12236

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