Python使用Image.open()打开的图片像素值与MATLAB读出的不同

qq_18410859 2017-09-29 10:39:39
img1 = Image.open("E:/python27/pic/0/1.jpg")
#分三个通道验证
r,g,b = img1.split()
r_array = array(r, uint8)
print('this is the data of r')
print(r_array[0:6, 0:6])

g_array = array(g, uint8)
print('this is the data of g')
print(g_array[0:6, 0:6])

b_array = array(b, uint8)
print('this is the data of b')
print(b_array[0:6, 0:6])

结果:
this is the data of r
[[ 0 0 59 105 122 120]
[129 126 110 119 126 120]
[100 121 78 83 98 87]
[ 42 98 73 75 89 74]
[ 66 120 100 75 79 75]
[ 67 106 90 57 64 72]]
this is the data of g
[[ 7 32 104 157 176 174]
[158 163 157 174 183 177]
[132 161 129 142 159 148]
[ 81 146 132 141 157 142]
[112 174 165 147 154 149]
[115 162 157 131 141 148]]
this is the data of b
[[ 68 42 49 56 62 62]
[218 172 102 72 66 64]
[189 169 70 36 40 31]
[136 150 68 33 34 21]
[162 174 99 35 27 26]
[163 159 88 16 11 22]]

MATLAB读出结果:
r:
0 0 59 105 122 120
129 126 110 119 126 120
98 119 76 81 96 85
42 98 73 75 89 74
66 120 100 75 79 75
67 106 90 57 64 72

g:
10 32 103 156 175 174
161 163 157 172 182 177
136 162 129 141 158 149
85 146 131 139 156 142
115 174 165 146 152 149
118 162 157 130 139 149

b:
50 41 52 64 69 60
200 171 103 80 75 62
172 168 73 45 47 29
119 148 72 42 41 21
145 174 101 44 34 24
147 159 90 25 20 21

python读出的数据标黑的部分为不同值,r值只有少数不同,差别只有尾数,但是b值差别就很多了!不知道为什么?不知道有没有大神遇到过?这个是什么原因?如果差别这么大的话怎么做图像数据处理?
...全文
2312 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunny7862632 2017-09-30
  • 打赏
  • 举报
回复
引用 2 楼 ssbqrm 的回复:
[quote=引用 1 楼 sunny7862632 的回复:] JPG是有损压缩,算法不一样出来结果是会有差别的。用BMP格式就不会有这个问题了。
有损压缩是指原图转为jpg保存的时候信息会丢失,你每次解码jpg应该都得到一样的结果[/quote] 解码使用的算法不一样,恢复的结果也是有差别的。不过误差也是在一定范围内的,不会把红色弄成绿色。
ssbqrm 2017-09-30
  • 打赏
  • 举报
回复
引用 1 楼 sunny7862632 的回复:
JPG是有损压缩,算法不一样出来结果是会有差别的。用BMP格式就不会有这个问题了。
有损压缩是指原图转为jpg保存的时候信息会丢失,你每次解码jpg应该都得到一样的结果
sunny7862632 2017-09-29
  • 打赏
  • 举报
回复
JPG是有损压缩,算法不一样出来结果是会有差别的。用BMP格式就不会有这个问题了。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧