镜子,前5s摄像头镜子有灰尘,后5s摄像头镜子有灰尘那个是真正的自己

通常,镜面的&左右反&被描述为:你在镜子前用右手写字,而镜子中的你正在用左手写字。为什么镜面成像给人感觉左右反而不是上下反呢?回顾高中物理,镜中像的形成是由于反射的光被人眼接收,而人以光沿直线传播的经验在脑中形成镜面后的虚像。似乎这并没有解释清楚虚像为什么会&反&,在哪个方向上&反&。
这两天在调试android前置摄像头,今天基本完成,期间想到了这个问题,昨晚终于搞懂&&现在努力把思路记下来。
这个问题其实去年在面试题中就有看到过,当时没有完全想清楚,前天看了人人网上的一个帖子,更加迷惑了。
先从摄像头说起,我调的是全智开发板的facing front camera,在解决照相(problem和solution见链接)时,如下矛盾困扰着我:
1,在不对摄像头预览图做任何修改的情况下,摄像头只是忠实地向屏幕渲染它所看到的画面。
2,把物体从平板电脑的底面和顶面伸向摄像头,看到的是正像,从侧面伸过去,看到的是倒像。就好像摄像头知道我会横屏使用设备而不是竖屏一样!因为上下和左右这两条轴是不平衡的。
所以,并不&认识&平板电脑的方向的摄像头,对&上下轴&和&左右轴&产生了不平等的处理。
昨天下午我不停地想象将一个后置摄像头从机器上拿下来,分别从侧面和上下面将其旋转成前置摄像头的情景,以及翻转放置在台式电脑上的家用摄像头的情景,用了几个小时才想通。原来,摄像头和机器对两个轴都是&公平&的,但摄像头在机器上的位置确实不&自然&。就是说,当前它固定在机器上的位置并不是唯一&正确&的位置,将它旋转180&,它仍然正确(其实1~360每一个角度都&正确&)。旋转180&之后,上下成像倒立,左右却不会倒了,此时竖屏使用平板电脑成为更&舒适&的选择。延伸下去,家用电脑上的家用摄像头,旋转180&也是&正确&的咯?可它在屏幕上呈现像绝对是&反&的:地板会跑到屏幕上方,天花板会到屏幕下方去。等等,这样一来,左右就&正&了,无论你把头从摄像头左侧还是右侧伸过去,屏幕上的成像都是与你的头同方向的。所以,家用摄像头的这个倒置的角度也是&正确&的摆放位置,只要你愿意抛弃&天花板在&上&、地板在&下&&的观念。
说到重点了,我们之所以会认为&镜面成像是左右反而不是上下反&是因为&绝对上下&的观念根深蒂固。在地面上,我们把重力方向定义为&下&,重力的反方向定义为&上&,而左右的方向(即水平轴)就基于上下轴(重垂线)而存在。然而,就一面简单的镜面来说,左右轴和上下轴只不过是这样一组向量:他们互相平行且同时垂直于镜面法线。而这样的向量组合有无数组,只要在镜面上过同一点画十字架即可,有多少十字,就有多少组这样的向量。
想象一只生活在深海(不是海底也不是海面,为了抛弃上下的概念)中的章鱼,不不,不是海绵宝宝中的章鱼哥,而是一只完全伸展开他的触手的章鱼,像一朵百合花一样,现在他的&上手&拿着刀,&下手&拿着叉子,这时他照了照镜子,发现它自己拿刀的成了&下手&,拿叉子的成了&上手&。这只章鱼还有很多对触手,本文试图说明的是,&它的每一对触手在镜面中都可以是反的&。
                  章鱼照镜
什么是&反&?不管是人还是章鱼,他们认为镜子中的自己左右或是上下&反&的时候,都在潜意识里做了一件事:把镜子里的虚像拉出来与真实的自己&重合&(实际上像是反的,无法真正重合)。重点就是潜意识中的这个&拉&的动作:1、如果它包含了一个旋转,并且是(绕着重垂线)水平旋转,得到的就是虚像与我&左右反&的结论;2、如果是(绕着水平轴)垂直旋转,就得到,虚像与自己&上下反的结论&;3、如果你的潜意识比较直接,直接把它拉过来而不旋转,那么你得出的就是虚像与自己&前后反&的结论。归纳这三个拉的动作,它们都将虚像沿着镜面法线的方向往实像处移动了X,X为实像中心点(显然,这个点是不存在的,因为人体或是章鱼都不是数学上&点对称&的几何体,可见我们的潜意识的工作还是粗糙的)与镜面的距离,且分别做了旋转(情况1,沿过中心点的重垂线旋转180&;情况2,沿过中心点的水平线旋转180&;情况3,不旋转)。
&&&&&&&&&&&&&&&&&&&&&&& 情况1
          情况2
            情况3
所以你可以知道,在无数种&重合&方式中,这三个动作并不具备特殊性,你现在可以在意识中(而不是潜意识)将虚像沿任意轴旋转任意角度,只不过这些情况下的&重合&令你的&本我&感到更加不适罢了。网上很多人说,镜面中的像是&前后反&,显然他们指的是,在你的潜意识不做&旋转&只做&移动&的工作的情况下,虚像与实像的这种重合后的&反&的景象。
恐怕到这里,有些人还是难以抛弃&绝对上下&的观念,而这恰恰解释了为什么人们大多数人认为镜面成像是左右反了。
在三维空间里抛弃&头为上,脚为下&的绝对方向的观念我用了2天左右的时间。想到高中时读《时间简史》和《果壳中的宇宙》,曾试图抛弃&绝对时间&的观念。看来智商缺乏保养,一直记得幼儿园老师说过,脑袋像机器,太久不用也会生锈哟。
阅读(...) 评论()Coding 并快乐着
把前置摄像头当镜子使:手机镜子----mirror.ipk
上次讲了如何开启相机,但是还没得到屏幕输出
这次就看看怎么把相机输出到屏幕上,做个镜子吧:
首先加入头文件:
#include &mmf/mm_camcorder.h&
定义几个尺寸:
#define PREVIEW_W 480
#define PREVIEW_H 640
这里最大好像只能是480×640
再声明几个全局变量:
GtkWidget *overlay,*overlay_
MMHandleType front_cam=0;
照之前将的初始化一个form:
int main(int argc, char *argv[])
GtkWidget *
GtkWidget *
GtkWidget *
gtk_init(&argc, &argv);
mainwindow = gtk_main_window_new(GTK_WIN_STYLE_DEFAULT);
gtk_effect_set_enable(GTK_WIDGET(mainwindow),FALSE);
form = gtk_form_new(FALSE);
gtk_form_set_title(GTK_FORM(form), "Mirror in i8320");
gtk_main_window_add_form(GTK_MAIN_WINDOW(mainwindow), GTK_FORM(form));
gtk_main_window_set_current_form(GTK_MAIN_WINDOW(mainwindow),GTK_FORM(form));
fixed= create_overlay_fixed();
gtk_container_add(GTK_CONTAINER(form), fixed);
gtk_main_window_set_title_button( GTK_MAIN_WINDOW(mainwindow), GTK_POS_RIGHT, NULL, "EXIT", kill_app, NULL);
gtk_widget_show_all(mainwindow);
cam_preview_start();
gtk_main();
不过这次添加到form的组件是一个gtk_fixed,并通过create_overlay_fixed()初始化:
GtkWidget *create_overlay_fixed()
GtkWidget *
int index=0;
fixed=gtk_fixed_new();
overlay=gtk_overlay_drawing_new();
int i=GTK_IS_OVERLAY_DRAWING(overlay);
g_printf("GTK_IS_OVERLAY_DRAWING1:%d/n",i);
gtk_overlay_drawing_set_type(GTK_OVERLAY_DRAWING(overlay),GTK_OVERLAY_TYPE_YUV420);
memset(&alloc,0,sizeof(GtkAllocation));
alloc.x=0;
alloc.y=0;
alloc.width=PREVIEW_W;
alloc.height=PREVIEW_H;
gtk_widget_size_allocate(overlay,&alloc);
gtk_widget_set_size_request(overlay,alloc.width,alloc.height);
gtk_fixed_put(GTK_FIXED(fixed),overlay,0,0);
这里往fixed里面加入了一个overlay,并设置了overlay的尺寸和类型GTK_OVERLAY_TYPE_YUV420
看回到main()中,fiexd初始化完成后,就是开启相机cam_preview_start():
void cam_preview_start()
cp.videodev_type = MM_VIDEO_DEVICE_CAMERA1;//这里的CAMERA1表示前置相机,CAMERA0表示主相机
MMCamcorderCreate(&front_cam,&cp);
MMCamcorderRealize(front_cam);
GTK_WIDGET_MAPPED(overlay);
GTK_IS_OVERLAY_DRAWING(overlay);
overlay_maped_widget(overlay);
MMCamcorderStart(front_cam);
这里的CAMERA1表示前置相机,CAMERA0表示主相机
把相机输出到屏幕上overlay_maped_widget:
int overlay_maped_widget(GtkWidget *widget)
GTK_IS_OVERLAY_DRAWING(widget);
win_id=gtk_overlay_drawing_get_resource(widget);
MMHandleType attrs=0;
MMCamcorderGetAttrs(front_cam,MM_CAMCORDER_ATTR_DISPLAY,&attrs);
g_return_val_if_fail(attrs,FALSE);
MMAttrsSetData(attrs,MM_CAMCORDER_DISPLAY_HANDLE,(void*)&win_id,sizeof(win_id));
return MMCamcorderSetAttrs(front_cam,MM_CAMCORDER_ATTR_DISPLAY,attrs);
完成,现在就可以在屏幕上看到自己的样子了
如果想得到主相机的输出,就把前面的CAMERA1换成CAMERA0
最后,想把前置相机拍摄的画面保存,按照文档试了很多遍都没成功,以为是编码格式之类的问题,后来把CAMERA1换成CAMERA0即主相机,结果一下子就成功了,看来前置相机拍摄的相片是无法保存的啦
下面是保存的代码:
在main中给mainwindow加入一个标题按钮:
gtk_main_window_set_title_button( GTK_MAIN_WINDOW(mainwindow), GTK_POS_LEFT, NULL, "capture", cam_capture, NULL);
回调函数cam_capture:
void cam_capture()
MMCamcorderCaptureDataType captureD
MMCamcorderSetVideoCaptureCallback(front_cam,(MMCamcorderVideoCaptureCallback)save_image,NULL);
MMCamcorderCaptureStart(front_cam);
不要被这里的front_cam误导,只是因为一开始声明的变量是front_cam,而实际上已经换成camera0主相机
MMCamcorderCaptureStart表示按下拍照按钮,而MMCamcorderSetVideoCaptureCallback就是给这个动作设置了一个回调save_image:
bool save_image(MMCamcorderCaptureDataType *frame, MMCamcorderCaptureDataType *thumbnail, void *user_param)
fp = fopen("/mnt/ums/mypic.jpg", "wb");
fwrite(frame-&data, frame-&length, 1, fp);
fclose(fp);
return FALSE;
ok,相片保存到mypic.jpg里面去了,是不是很简单?
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!镜子,前摄像头和后摄像头哪个才是别人眼中的自己? - 知乎8被浏览<strong class="NumberBoard-itemValue" title="分享邀请回答0添加评论分享收藏感谢收起0添加评论分享收藏感谢收起Sina Visitor System已解决问题
为什么边看着镜子边用手机后置摄像头对着自己拍照或摄影会比不看镜子直接自拍好看呢?那么哪个才是真正模样?
提问时间: 17:45:47
是这样。 一边对着镜子做表情,一边用后置摄像头对着自己自拍 ,这样似乎比 不看镜子直接对着自己自拍或摄影好看的多。那么问题来了。到底哪个才是真正的自己的模样,也就是别人眼中的模样。 谢谢回答 麻烦啦!
浏览次数:1709
无美颜的镜头下的自己更加的真实。 有个理论说照镜子的时候,大脑会美化自己。 我看一个做摄影的说 我们对自己的认识只能通过镜子 所以会觉得照片上的人比镜子里的丑 但是周围的人看我们都是照片一样的 所以他们比我们更知道自己平时的样子 还说拍出来的照片漂不漂亮要听周围人的 这样推断应该是我们比照片里的人 漂亮20%。 前置镜头容易产生广角畸变,镜子里人眼近距离双重聚焦,如果你想看到别人眼中自己的样子,推荐使用85-135mm焦段的镜头拍照,那样最接近你想要的效果。是镜子做了优化。 摄像头因为品质和是单镜头的问题,映像也会有变形。 @_@谢邀,手机前置镜头肯定是最丑,为了方便自拍畸变很严重,相机是和普通家里用的镜子是最接近真实情况的,当然,这是在使用正常角度的情况下,如果大角度俯仰都不可靠,这就是为什么手机前置镜头拍出来很美但真人确无法直视的原因。 至于镜子中的化妆镜和商场试裝镜都是不靠谱的,都有轻微的弧面来让你变得更好看,至于还有一些其他因素,参见我回答的另一个问题为什么镜子里的自己比镜头里的自己要顺眼呢?行为肯定有动机,对着镜子拍,手机作为遮挡物,可以遮挡一些身体和脸的部位,相当于贴纸,又不显刻意。 对于大镜子,就可以拍出你的整个身体轮廓,如果没有其他人帮你拍的情况,应该也蛮多见的。 有时候也要和情景联系起来,比如说朋友拍地铁隔离的玻璃自拍,也许他是想展示她此时所在地,同时对于这种不清楚的镜子,往往内心可以投射出自己喜欢的样子。
答案创立者
以企业身份回答&
快速解决你的电商难题
店铺优化排查提升2倍流量
擅长&nbsp 店铺优化
您可能有同感的问题

我要回帖

更多关于 前置摄像头和镜子 的文章

 

随机推荐