回答編集履歴
3
微修正
answer
CHANGED
@@ -5,9 +5,9 @@
|
|
5
5
|
|
6
6
|
現状では,画像は 8bit3ch として読み込まれていると思います.
|
7
7
|
その場合,ある行の画素のデータは,
|
8
|
-
[
|
8
|
+
[B0][G0][R0][B1][G1][R1][B2][G2][R2]...
|
9
9
|
という並び(ここで1つの[]が1byteだと思ってください)になっています.
|
10
10
|
1画素の情報が3byteです.
|
11
11
|
これを(無理矢理)intとして読み取ろうとしているので,(intのサイズが4byteだとしたら)
|
12
|
-
[
|
12
|
+
[B0][G0][R0][B1] [G1][R1][B2][G2] [R2][B3][G3][R3] ...
|
13
|
-
という形で4byte毎
|
13
|
+
という形で4byte毎のメモリ内容をintとして解釈した値になってしまっています.
|
2
補足
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
文章のつながりをより明確化
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)`としてはどうでしょうか.
|