65.9K
CodeProject 正在变化。 阅读更多。
Home

使用循环和颜色处理改进摄影工作流程

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2019年4月8日

CPOL

2分钟阅读

viewsIcon

5986

为动作相机和 VR 相机构建专用工作流程

引言

对于专业的摄影工作流程,标准的相机应用程序通常缺乏功能,这阻碍了摄影师探索创意想法。本文展示了如何向基于Android的相机添加功能,使其更适用于水下摄影。这些技术可以适用于大多数VR相机,使用Google的Optical Spherical Camera API,或任何内部运行Android的相机,包括带有相机的手机。

背景

使用防水壳,您可以轻松地在3个大气压的环境中操作相机。相机承受的压力通常不是问题。然而,阳光穿透海洋的光线确实会造成问题,因为海洋会吸收红色的光波。

由于我使用的是可以拍摄360度照片的VR相机,因此无法在水下使用补光灯提供足够的红色光波。为了解决这个问题,我研究了所用基于Android的相机的API。

Using the Code

我首先在陆地上使用API测试调整色温。

在我的例子中,API非常简单,因为我使用了名为theta4j web API的开源第三方库。只需要一行代码。

     theta.setOption(Options.COLOR_TEMPERATURE, 10000);

为了在水下触发色温变化,我需要使用防水壳上的按钮。

buttons

为了捕捉按钮事件,我使用了一个库。稍微棘手的部分是,我需要将命令放在一个单独的线程中。这对于上面设置色温的例子也是如此。在下面的例子中,线程使用colorExecutor.submit运行。它使用了新的Java 8 lambda表达式语法。

    if (keyCode == KeyReceiver.KEYCODE_MEDIA_RECORD) {

        colorExecutor.submit(() -> {
            try {
                theta.setOption(WHITE_BALANCE, WhiteBalance.COLOR_TEMPERATURE);
            } catch (IOException e) {
                e.printStackTrace();
            }
            switch (colorTemperature) {
                case 2500 :
                    colorTemperature = 6500;
                    notificationLed3Show(LedColor.YELLOW);
                    try {
                        theta.setOption(Options.COLOR_TEMPERATURE, 6500);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

        break;

控制LED

我使用的相机没有屏幕。为了显示当前的色彩状态,我正在调整LED的颜色。

led colors

关注点

在大多数情况下,标准的软件可以很好地拍摄照片。在具有挑战性的光线和压力条件下,专业的软件会很有帮助。构建软件比我预期的要容易。在RICOH THETA V中拥有完整的Android操作系统是一个很大的优势,因为我可以使用Android Studio和Java。

由于我自己不是潜水员,我意识到与该领域的专业人士交谈非常有价值。我从30分钟的关于潜水员工作流程的讨论中学习到的知识,比我花费数月时间在线研究获得的知识要多得多。

我也得以更多地了解我儿子的工作。

我学到的重要一件事是,不同的环境会导致光线和颜色产生不同的反应。软件可以轻松调整颜色。

目前,下面的测试照片有点偏蓝。但我希望在未来的潜水中看到插件色彩调整的效果。

历史

在开发插件之前,已经进行了一些水下测试拍摄。

© . All rights reserved.