UI交互设计:红绿立体图片的制作
实验原理
所有立体眼镜的原理都一眼,让左右眼看到不同的画面,利用视觉差在脑子里合成立体画面。各种不同类型的立体眼镜对应的片源和播放设备都不同:红绿眼镜只需要低成本的眼镜加普通播放设备就可以,电影播放的是两个一个偏红一个偏绿的重叠画面,因为红绿是互补色,通过红色镜片看会把绿色的画面过滤掉,同样绿色镜片会过滤掉红色画面,这样就实现了左右眼的不同画面实现立体效果,成本很低但是相对效果较差,尤其是在色彩上不能反映事物的真实颜色,还有点伤眼睛。
python之openCV
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
实验流程
(你可以通过PS制作并获得同样的效果!不过看看这些东西可以开阔思路,或者获得加分?)
一、怎么拥有python(老鸟请跳过)
(一)python在哪下载:https://www.python.org/downloads/
(二)python如何安装:
(三)python如何使用:
如果你完成了这些,恭喜你,一切才刚刚开始!
二、怎么安装openCV
(一)以管理员形式打开命令提示符
(二)输入pip install opencv-python
注:如果安装出现错误,那就再试一次。
什么?你没有pip?看看这里!
如果一切都没有问题了,ok,现在我们可以开始写代码了!
三、写点什么?
openCV帮助说明,以下出现看不懂的函数,请试着在这里查询!
import cv2
import numpy as np
img0=cv2.imread('Figure1.jpg')
img1=cv2.imread('Figure1.jpg')
img2=cv2.imread('Figure1.jpg')
#此函数返回[行数(像素),列数(像素),通道数]的元组
img0_info=img0.shape
height=img0_info[0]
width=img0_info[1]
#创建一个可以调节大小的窗口window
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
#img[y0:y1,x0:x1,c]=0这里的第三个参数c取值是0,1,2,分别代表R,G,B三个通道
#去掉红色和蓝色通道,只保留绿色通道
img1[:,:,0]=0
img1[:,:,2]=0
#只去掉绿色通道,保留红色和蓝色通道
img2[:,:,1]=0
#变换矩阵:设置平移变换所需的计算矩阵:2行3列
#例[[1,0,20],[0,1,50]] 表示平移变换:其中20表示水平方向上的平移距离,50表示竖直方向上的平移距离。
#此处并没有做竖直方向上的移动
translation=np.float32([[1,0,20],[0,1,0]])
#变换函数,使img1向右移动20像素但画布大小不变
img1=cv2.warpAffine(img1,translation,(width,height))
#混合函数,涉及参数包括图像名称img1,权重1,相加后'添加'的伽马值0(亮度?)
img3=cv2.addWeighted(img1,1,img2,1,0)
#对图像进行裁切,显示与保存
img3=img3[:,20:]
cv2.imshow('window',img3)
cv2.imwrite('3D.png',img3)
这就是所有代码了!然后按ctrl+s把它命名保存到一个你忘不了的地方!
如果想要运行它,你还需要在与它“相同路径
”的地方准备一张名为Figure1
的JPEG
文件!
比如这样?
好吧!现在我们试着运行它!直接双击这个文件! 当然是行不通的!
右键点击它,选这个选项!
或者
好了,然后对着它按F5!
这是效果:
这是原图:
好耶!你可以试着修改代码并使用自己喜欢的图片!
最后,本人并不是专业程序员,所以技术有限!如果有任何错误或问题欢迎大家指出交流!