国外找来的,从一张图片生成 裸眼3D 立体图像 的代码。

using System;
using System.Drawing;namespace Legalsoft.Truffer.Algorithm
{public class StereoBit{public int prev { get; set; } = 0;public int next { get; set; } = 0;}public class StereoImageBuilder{private static readonly int RESULT_WIDTH = 800;private static readonly int NO_BIT = -1;private static readonly int RESULT_HEIGHT = 600;private static readonly int BACK_WIDTH = 100;private static readonly int EYE_SPACE = 128;public static Image Build(Image front, Image back, byte depthCount){if (front == null || back == null) return null;Bitmap bmpBack = ResizeBitmap(back, BACK_WIDTH, RESULT_HEIGHT);Bitmap bmpFront = ResizeBitmap(front, RESULT_WIDTH, RESULT_HEIGHT);Bitmap bmpResult = new Bitmap(RESULT_WIDTH, RESULT_HEIGHT);byte[][] depthVector = new byte[RESULT_HEIGHT][];for (int i = 0; i < RESULT_HEIGHT; i++){depthVector[i] = new byte[RESULT_WIDTH];}CalcDepthVector(depthVector, bmpFront, depthCount);StereoBit[] bits = new StereoBit[RESULT_WIDTH];for (int i = 0; i < RESULT_HEIGHT; i++){CalcEqualColorLine(depthVector[i], bits, depthCount);ColorUpResult(bits, bmpResult, bmpBack, i);}return Image.FromHbitmap(bmpResult.GetHbitmap());}private static Bitmap ResizeBitmap(Image image, int width, int height){return new Bitmap(image, width, height);}private static void CalcDepthVector(byte[][] depthVector, Bitmap bmpFront, byte depthCount){for (int i = 0; i < RESULT_HEIGHT; i++){for (int j = 0; j < RESULT_WIDTH; j++){depthVector[i][j] = (byte)(CalcGray(bmpFront.GetPixel(j, i)) * depthCount / 255);}}}private static void CalcEqualColorLine(byte[] depthVector, StereoBit[] bits, byte depthCount){for (int i = 0; i < bits.Length; i++){bits[i].prev = NO_BIT;bits[i].next = NO_BIT;if (i + BACK_WIDTH < bits.Length)bits[i].next = i + BACK_WIDTH;if (i - BACK_WIDTH >= 0)bits[i].prev = i - BACK_WIDTH;}for (int layer = 0; layer < depthCount; layer++){for (int x = 0; x < RESULT_WIDTH; x++){int left_x = x - EYE_SPACE / 2 + layer / 2;int right_x = x + EYE_SPACE / 2 - (layer + 1) / 2;if (depthVector[x] == layer && left_x >= 0 && right_x < RESULT_WIDTH){if (bits[left_x].next != NO_BIT) bits[bits[left_x].next].prev = NO_BIT;bits[left_x].next = right_x;if (bits[right_x].prev != NO_BIT) bits[bits[right_x].prev].next = NO_BIT;bits[right_x].prev = left_x;}}}}private static void ColorUpResult(StereoBit[] bits, Bitmap bmpResult, Bitmap bmpBack, int y){for (int x = 0; x < RESULT_WIDTH; x++){if (bits[x].prev == NO_BIT){bmpResult.SetPixel(x, y, bmpBack.GetPixel(x % BACK_WIDTH, y));int temp = x;while (bits[temp].next != NO_BIT){temp = bits[temp].next;bmpResult.SetPixel(temp, y, bmpBack.GetPixel(x % BACK_WIDTH, y));}}}}private static byte CalcGray(Color c){return (byte)(0.299 * c.R + 0.587 * c.G + 0.114 * c.B);}}
}

——————————————————————

POWER BY 315SOFT.COM &
TRUFFER.CN

C#,精巧实用的代码,图片生成裸眼3D立体图像的源代码相关推荐

  1. 东芝21vf6c_东芝开发21寸高清裸眼3D立体液晶屏

    东芝移动显示公司(TMDisplay)日前宣布,他们已经开发出一款尺寸达到21寸的高清裸眼3D显示面板,将于下月进行公开展示. 该显示屏使用了Integral Imaging System" ...

  2. C#,精巧实用的代码,生成机器码(Machine Id)的基础源代码

    机器码用于软件使用权限的校验等等. using System; using System.IO; using System.Text; using System.Management; using S ...

  3. 裸眼3D全攻略3:拍摄3D—瞳距、镜距、视角偏转与空间感

    http://sd89.blog.163.com/blog/static/356041322014112532958728/ 3D图片的拍摄,与平面有着全新的不同要求,那就是空间感的表现. 简单来说, ...

  4. android手机裸眼3D技术原理和编程实现

    1.裸眼3D手机从去年开始流行.做为一个卖点或者噱头,为手机的输入输出提供一抹灵动的色彩.裸眼3D可以在二维的手机屏幕上不需要配戴VR眼镜或者谷歌纸盒就能展示三维的世界的效果,一般来说要给用户提供好的 ...

  5. Android OpenGL 仿自如 APP 裸眼 3D 效果

    概述 之前看到 自如团队 发布的 自如客APP裸眼3D效果的实现 ,非常有趣,不久后,社区内 Android 的开发者们陆续提供了 Flutter. Android 原生 .Android Jetpa ...

  6. 能看能听还能摸,这才是真正的裸眼 3D

    作者 | 吴志奇 来源 | 爱范儿(ID:ifanr) 裸眼 3D,一种不用戴设备就能看到立体图像的技术. 回想一下你记忆中的裸眼 3D: 80 后可能想到了<星球大战>里莱娅公主在一道蓝 ...

  7. 卷起来了!Android OpenGL仿自如APP裸眼3D效果

    /   今日科技快讯   / 近日,"乘联会"微信公众号发布消息,2021年12月新能源乘用车市场多元化发力,厂商批发销量突破万辆的企业有14家,较前期大幅增多,其中:比亚迪933 ...

  8. 7 Papers Radios | 机器人「造孩子」;谷歌裸眼3D全息视频聊天技术公开

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源丨机器之心 作者丨杜伟.楚航.罗若天 本周重要论文包括能「造孩子」的机器人以及谷歌公开的裸眼3D全 ...

  9. 谷歌最新黑科技:裸眼3D视频通话,宛如真人面对面!Jeff Dean:魔镜啊魔镜

    梦晨 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 受疫情影响停办一年的谷歌I/O大会回来了,这一次是全程线上举办. 在会上,谷歌公布了一个秘密开发5年多的黑科技: 这个名为Starli ...

  10. 怎么设置ppt页面的长度和宽度_在PPT中将照片变裸眼3D效果怎样操作?分享技巧,帮你快速实现...

    PPT的使用相信大家都不陌生,使用最多的就是制作PPT对工作进行汇报,对新项目进行展开讨论.其实在PPT中还可以设计海报,制作高逼格封面以及将照片变为3D效果等偏设计类的操作.今天将以如何把照片变为3 ...

最新文章

  1. 有人买不?没人的话我待会儿再来问问 价值6.11亿美元的入侵工具无人问津
  2. ECharts - 气泡图
  3. C语言插入排序算法及代码
  4. C#后台调用前台js(RegisterStartupScript)
  5. Intellij IDEA 使用Debug模式运行非常慢
  6. tika获取压缩文件内容
  7. 网络工程师还要学linux吗,网络工程师要学什么
  8. Java数组集合转换
  9. 公司 | 四年狂奔,少儿编程准独角兽小码王的盈利逻辑是什么?
  10. 游戏策划关于游戏概念和游戏原型设计
  11. 因为生活简单,所以内心强大
  12. windows server 2008 R2 怎么集成USB3.0驱动
  13. mysql怎么将成绩划分等级_数据库mysql中case如何给成绩划分等级?
  14. STM32+ESP8266+MQTT连接阿里云服务器(四、STM32连接阿里云平台)
  15. html img图片不变形等比例缩放,兼容ie6
  16. php gd库 缩小图片_【源码分享】PHP中GD库实现图片等比例缩放
  17. 如何获取屏幕保护程序的密码
  18. 安装w3af时已经安装retire却提示没有安装的问题
  19. 全球及中国私人银行产业投资趋势及渠道价值展望分析报告2021-2027年
  20. matlab在线性代数中的应用开题报告,矩阵应用开题报告.doc

热门文章

  1. Win10使用命令行查看cpu的温度
  2. java 专业英语单词_java_专业英语单词_力荐
  3. 微信小程序提示 本地域名不在以下 request 合法域名列表中,
  4. MySQL面试夺命连环27问
  5. HTML是什么?有什么作用?
  6. IP地址归属地查询算法
  7. 我在上海对日外贸公司的经历
  8. Ardupilot笔记:Rover auto模式下的执行流程
  9. Tether市值十月下跌超过10亿美元
  10. 计算机科学与技术[计算机及应用](本科)自考