如果你选修清华大学计算机系相关课程,并且正在做与本仓库相同的作业,请先自己实现后再参考。在课程允许参考的前提下,参考本仓库后,务必在 README 和代码注释中记录参考本仓库的内容。
多媒体技术基础及应用自选练习2 红蓝立体画制作
用代码实现红蓝立体画的制作,具体过程为:
- 读取图片
- 拆分RGB通道
- 输出偏移后重组的图片
使用了 Python 语言,NumPy PIL 和 SciPy 库配合完成。
im = Image.open(sys.argv[1])
data = im.load()
(width, height) = (im.size[0], im.size[1])
rgb = np.zeros((width, height, 3), dtype=np.uint8)
for i in range(width):
for j in range(height):
r, g, b, _ = data[i, j]
rgb[i][j][0] = r
rgb[i][j][1] = g
rgb[i][j][2] = b
new_rgb = np.zeros((height, width - 2 * diff, 3), dtype=np.uint8)
for i in range(width - 2*diff):
for j in range(height):
new_rgb[j][i][0] = rgb[i][j][0]
new_rgb[j][i][1] = rgb[i+2*diff][j][1]
new_rgb[j][i][2] = rgb[i+2*diff][j][2]
scipy.misc.imsave('output.png', new_rgb)
这里 diff
表示水平方向上的偏移,默认是 2 ,可以对代码进行修改。需要注意的是,由于不同的库对长宽的顺序不同,所以这里有一些微校的调整。
原图:
效果图(diff=2):
注意:不要长时间盯着效果图看,眩晕效果满分。