使用ANativeWindow的SurfaceTexture/Surface mapping
给定一个GraphicBufferProducer i创建一个表面,然后检索AnativeWindow.使用AnativeWindow_Lock,我得到一个指向缓冲区的指针.使用缓冲区,我在缓冲区中做一个记忆.问题在于,我在此缓冲区上使用的任何内容都仅限于屏幕的25%.请记住,宽度和缓冲区的尺寸非常接近屏幕本身的分辨率. 我的问题是,为什么缓冲区仅覆盖屏幕的一小部分?以及如何确保它覆盖最大的屏幕,即使不是全部?作为参考,这是代码: ANativeWindow_Buffer buffer; // window is created from a "new Surface(sp)" if (ANativeWindow_lock(window, &buffer, NULL) == 0) { // For testing purposes just put grey in the buffer memcpy(buff
2 2024-02-17
编程技术问答社区
解码器的输出面如何传递给编码器的输入面?
我试图了解地表到表面方法如何与MediaCodec一起使用.在仅比例的方法中,将解码的数据放在输出缓冲器中.该非编码数据可以手动处理,然后传递到编码器的输入缓冲器. 如果我们举一个示例,请从android MediaCodec cts 使用表面来表面方法在解码器和编码器之间传递数据,我们配置解码器以将解码的数据输出到表面称为AutperteSulface Futputsurface Facterface Facterface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface Faceface facterface facterface facterface facterface facterface ,我们配置编码器以在称为Inputsurface
0 2024-02-17
编程技术问答社区
如何理解MediaCodec'的用户面以提高编解码器的性能?
MediaCodec的官方文件 > 数据类型 编解码器在三种数据上运行:压缩数据,原始音频数据和原始视频数据.所有三种数据都可以使用bytebuffers处理,但是您应该使用表面进行原始视频数据来改善编解码器性能. Surface使用本机视频缓冲区而无需映射或将其复制到字节式式案件;因此,它更有效.通常,当使用Surface时,您通常无法访问原始视频数据,但是您可以使用ImageReader类访问未安全的解码(RAW)视频帧.这可能比使用字节扣更有效,因为某些天然缓冲区可能会映射到直接的字节扣中.使用ByteBuffer模式时,您可以使用图像类/getInput/outputimage(int)访问原始视频帧. 如何在这个局限性下? 您应该将表面用于原始视频数据来改善编解码器性能,什么是本机视频缓冲区?我如何使用表面来改善编码或解码性能? 解决方案 您可以使用编解码器的输入表面进行对视频帧进行播放,您可以使用 createInputsurface()然后(如果不使用n
0 2024-02-17
编程技术问答社区
MediaRecorder和VideoSource.SURFACE,停止失败:-1007(一个严重的Android错误)。
我正在尝试录制MediaRecorder而不使用Camera实例,但使用Surface视频源(是的,但事实证明它不是那么完美) - mediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE); 我只是写出问题: 下一个代码仅在某些设备上起作用,并且在重新启动后的设备后在某些设备上暂时起作用,或者根本不起作用 如果它不起作用,MediaRecorder.stop()方法将失败,下一个错误 e/mediarecorder:停止失败:-1007 w/system.err: java.lang.runtimeException:停止失败.在 android.media.mediarecorder.stop(本机方法) 录音机MP4文件的大小太小(kilobytes),无法播放 测试的设备: 在Lenovo P2,小米Mi A1 上工作 在小米Redmi 5,Sony Xp
0 2024-02-13
编程技术问答社区
Camera2 API:它能将两个摄像头输出到同一个表面吗?
我有特定的要求将信号从两个摄像机连接到一个表面.每个相机将填充一半的表面. 表面将显示或驻留在OpenGL纹理中. 使用Camera2 API,这根本可能吗?第一件事是指定目标矩形用于在表面上投影的目标矩形,第二件事是两个摄像机可以将单个表面用作输出. 的原因是,我们的硬件将一个图片信号分为两个Android摄像机,并且需要将图片重新连接到软件中,以便可以使用Mediarecorder将包含两个摄像机图片的表面保存为视频. 谢谢 解决方案 不是直接.表面只能一次由单个生产源拥有,因此,如果您在相机设备0的会话配置中包含特定的表面,则尝试与相机设备1一起使用它,同时将为您带来错误相机设备的创建1. 如果要这样做,则需要实现自己的合并,该合并从每个相机中吸入缓冲区,并将它们复合到一个输出中. 最有效的路线可能是通过GPU和OpenGL进行的.简而言之,您需要创建一个OpenGL上下文和两个SurfaceTextures,一个用于每个相机输出.然后,您可以
4 2024-02-13
编程技术问答社区
SurfaceTexture "中 "nativeGetTimestamp "的实际时间
我正在编写一个视频处理应用程序,需要知道每个帧的实际时间. 当我使用elapsedRealtime计算时间偏移时,该应用起初可以正常工作: long timeOffset = java.lang.System.currentTimeMillis() - android.os.SystemClock.elapsedRealtime(); long actualTime = timestamp + timeOffset; 但是,当我使用其他设备时,我发现某些设备将用于surfaceTexture.timestamp,因此代码应为: long timeOffset = java.lang.System.currentTimeMillis() - android.os.SystemClock.uptimeMillis(); long actualTime = timestamp + timeOffset; 所以我的问题是,是否有任何方法可以知道该设备用于surfaceT
0 2024-02-11
编程技术问答社区
如何在Pygame中制作圆形表面
我需要创建一个具有边界圆的表面.在该边界圆之外,在该表面上绘制的任何内容都不应看到.我已经尝试使用口罩,子表面,srcalpha等,但似乎没有任何作用. 我的尝试: w = ss.get_width () h = ss.get_height () TRANSPARENT = (255, 255, 255, 0) OPAQUE = ( 0, 0, 0, 225) crop = pygame.Surface ((w, h), pygame.SRCALPHA, ss) crop.fill (TRANSPARENT) c = round (w / 2), round (h / 2) r = 1 pygame.gfxdraw. aacircle (crop, *c, r, OPAQUE) pygame.gfxdraw.filled_circle (crop, *c, r, OPAQUE) ss = cro
2 2024-01-24
编程技术问答社区
根据它们所包围的三维区域,将表面分配到区域内
给定三维空间中的一组表面,我试图将每个表面分配给参考最小3D区域的区域,如果不适用,则无区域或无区域.我还想确定表面是否是两个区域之间的接口.因此,例如,如果我们有11个表面,代表两个立方体彼此堆叠,则顶部立方体中的表面将位于同一区域,底部的表面将位于不同的区域(界面表面为在两个区域). 举例来说,我想采用一组表面a href =" https://i.stack.imgur.com/cjzg8.jpg" rel =" nofollow"> this .这里的每种颜色代表一个区域,灰色无关(如底部的襟翼). 我已经进行了一些搜索,试图找到某人是否已经提出了一种算法来做到这一点,但是我没有找到任何东西(大多数似乎识别出区域而不是将表面链接到它们所包围的区域).因此,我想提出自己的算法,想知道是否还有其他选择,或者我的方法是否有效. 我假设所有表面都连接了. 我的想法是: 选择一个随机表面,其各个侧面的各个侧面彼此碰到一个表面,然后将其添加到区域1. 将每个连
2 2024-01-23
编程技术问答社区
简化3D曲面的算法?
i有一组3D点近似表面.但是,每个点都会遇到一些错误.此外,一组点包含的点比表示下面的表面所需的点要多得多. 我正在寻找的是一种算法,可以创建一组新的(较小)的点,代表了表面的简化,更光滑的版本(赦免没有比"简化,更平滑"的定义更好的定义).基础表面不是数学上的表面,因此我不希望将数据集拟合到某些数学功能. 解决方案 代替将其作为点云处理,我建议使用Delaunay三角剖分对网格进行三角剖分: http://en.wikipedia.org/wiki/delaunay_triangulation 然后淘汰网格.您可以研究摘要算法,但是您可以通过算法合并具有相似正常的相邻TRI的算法获得相当不错的结果. 其他解决方案 我认为您正在寻找"细节级别"算法. 一个简单的实现的是将您的音量(表面)分解为一定数量的子卷.从每个子体积的点中,选择一个代表点(例如最接近中心的一个,或最接近平均值或平均值等).用这些点重新绘制表面. 您可以调整子量的数量以增加/减少
2 2024-01-23
编程技术问答社区
如何在Python中用 "matplotlib "绘制一个带有曲面的切片平面
我想知道如何创建两个具有表面至两个2D数字的切片平面. 例如,我创建了一个如下的表面: from mpl_toolkits.mplot3d import Axes3D from matplotlib import pyplot as plt import numpy as np def f(x1, x2): return 0.5 * x1 + 0.6 * x2 + 0.2 * x1 * x1 + 0.1 * x1 * x2 + 0.3 * x2 * x2 + 4 x = np.linspace(-3, 3, 100) y = np.linspace(-3, 3, 100) xx, yy = np.meshgrid(x,y) z = f(xx, yy) # set up the figure fig = plt.figure() ax = fig.gca(projection='3d') ax.set_xlim(-3, 3) ax.set_ylim(3, -3)
10 2024-01-08
编程技术问答社区
用np.outer生成一个圆柱形表面
我以前能够使用NP生成和绘制球形表面: u = np.linspace(0, 2*np.pi, 100) v = np.linspace(0, np.pi, 100) x = R * np.outer(np.cos(u), np.sin(v)) y = R * np.outer(np.sin(u), np.sin(v)) z = R * np.outer(np.ones(np.size(u)), np.cos(v)) 其中x,y,z为昏暗的100 x 100. 请参阅图,忽略"粒子痕迹" 我了解球体和圆柱体的数学和方向余弦,因此我认为混乱来自不了解NP.Outer在做什么. 我希望以下会产生一个圆柱体: u = np.linspace(0, 2*np.pi, 100) h = 5 x = R * np.cos(u) y = R * np.sin(u) z = np.linspace(0, h,
8 2024-01-08
编程技术问答社区
在gnuplot中叠加矢量、dgrid3d和pm3d进行3D绘图
我正在尝试绘制gnuplot叠加dgrid3d,pm3d和向量的矢量字段. 我可以让dgrid3d和pm3d工作,但是当我尝试将矢量叠加奇怪的事情时. 我正在尝试以下内容: set dgrid3d 50,50,2 set pm3d at b set hidden3d splot 'v-field.dat' u 1:2:6 w l, "" u 1:2:3:4:5:6 w vectors 数据的格式: 0.0000000020000000 0.0833272880000000 0 0 0 1.62609277247135e-09 0.5000000020000001 0.5833272880000000 0 0 0 0.965930741599645 0.8749688835000000 0.2083182225000000 0 0 0 0.233003475483508 0.3749688835000000 0.7083182225000000 0 0 0 0.732
4 2024-01-08
编程技术问答社区
Pyplot:如何提高plot_surface的分辨率,如何去除线条?
这似乎是一个非常基本的问题,但是在阅读了帮助功能并在Internet上进行搜索后,我仍然找不到解决方案.请问,如果我在这里错过了一些明显的东西. 请考虑使用MWE,旨在使用菌落和无线绘制极性坐标中的3D数字: : import numpy as np import matplotlib.pyplot as plt from matplotlib import cm r=np.linspace(0,1,100) theta=np.linspace(0,2*np.pi,10000) R,Theta=np.meshgrid(r,theta) X,Y=R*np.cos(Theta),R*np.sin(Theta) Z=R*np.sin(Theta)*np.cos(Theta) fig=plt.figure(1) ax=fig.add_subplot(projection='3d') ax.plot_surface(X,Y,Z,cmap=cm.inferno,linewidth=
2 2024-01-08
编程技术问答社区
旋转3D曲面图时,散点会消失
我试图通过绘制所有内容并旋转表面旋转表面以检查表面行为中相对于3D空间中的散射点的任何奇数,以了解表面的符合我的数据点. . 问题是,当我旋转渲染以执行此操作时,图就消失了.我该如何使情节持续存在? 您可以使用以下代码进行复制 - 主要取决于 Python 3D多项式表面拟合,依赖阶. import numpy as np import scipy.linalg import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import itertools def main(): # Generate Data... numdata = 100 x = np.random.random(numdata) y = np.random.random(numdata) z = x**2 + y**2 + 3*x**3 + y + np.random.r
2 2024-01-08
编程技术问答社区
如何使用较少的软件包来绘制双变量正态分布的表面和轮廓线
我将绘制双变量正态分布及其轮廓的3D表面(可能是任何双变量正态分布).我想在图纸中使用persp和contour. 我在互联网上搜索了,但是我找到了许多方法.他们中的大多数都使用了一些软件包.但是我想以更少的软件包甚至不安装任何软件包的方式来执行此操作(但是,我不知道这是可能的).您能以双变量正态分布的示例向我展示自己的方式吗? [包装较少,更好的解决方案].确实,我希望看到最简单的方法来绘制双变量正态分布的表面和轮廓. 解决方案 只要您准备编写自己的代码来执行此操作,就可以在不使用软件包的情况下完成您喜欢的任何事情.仅使用persp和contour的几行R代码可视化2D表面,但是生成 表面(即创建2D密度图,不是微不足道的. 这是您仅使用mnormt软件包生成2D双变量正态分布表面的方法(按照注释中的要求).在此示例中,我编造了一个虚拟方差互动矩阵. library(mnormt) x
8 2024-01-08
编程技术问答社区
在R曲面图中插入 "切断 "字段
我正在使用persp()创建一个3D图(但我对可以完成工作的任何事情开放).现在,我想添加一个2D字段,以清楚地清楚3D图以高于特定Z值的位置.有办法实现这一目标吗?理想情况下,理想情况下,它就像半透明的表面一样,您可以在表面下方看到质量. 使用PERSP文档中的示例 f
4 2024-01-08
编程技术问答社区
三维的Python二维圆形表面
我正在尝试生成圆柱体表面的顶部/底部.我能够在这里获得侧面:产生圆柱体表面的表面表面与np.outer .我想再次使用np.outer以保持一致性.我以为我理解了链接中的答案,但是如果我正确理解,那么以下内容应该有效: R = 5 h = 5 u = np.linspace(0, 2*np.pi, 100) x = R * np.outer(np.ones(np.size(u)), np.cos(u)) y = R * np.outer(np.ones(np.size(u)), np.sin(u)) z = h * np.outer(np.ones(np.size(u)), np.ones(np.size(u))) 但是,在我的图中,没有生成表面.我是否仍然不正确使用NP.为什么未产生表面? 解决方案 没有可见的磁盘,因为您创建的所有点都与"内圆"和"外圆"之间的中心和表面完全相同.为了查看磁盘,半径需要在0和您所需的值之间变化
0 2024-01-08
编程技术问答社区
MATLAB-3D曲面图
我在3D空间中有20个数据点.在这里,您可以看到它们绘制: clear all close all clc Data = [97.4993 104.3297 0.7500 196.7021 100.0000 105.0000 0.7500 290.9164 100.0000 107.5000 0.7500 142.1626 96.2569 106.4992 0.7500 143.3605 97.5028 104.3317 1.0000 197.1111 100.0000 105.0000 1.0000 290.4210 100.0000 107.5000 1.0000 144.0155 96.2530 106.4969 1.0000 144.0969
4 2024-01-08
编程技术问答社区
三维表面JavaFX
我正在尝试在Javafx中实现自己的3D Surface动画,但我不明白像它应该有效的一切,有人可以帮助我理解哪个应该去的地方? 已经知道,使用类需求类对象构建网格,然后必须使用方法mesh.getPoints.addAll(...);添加点,但是..我的Function使用apply方法在使用apply方法没有帮助我完全,第一个参数必须是阵列浮点类型,而不是double应用程序后的变量. 我该如何解决这个问题? 我发现了@Roland创建的一些纹理和面孔的实现: 3d Surface-stack-stack 纹理和面部如何工作? 对我来说真的很重要,谢谢您的帮助! 解决方案 请看一下FXYZ library .它是开源的,您可以从代码中学习. 对于纹理,请看一下帖子. fxyz具有SurfacePlotMesh类,可以完全按照您想要的操作:基于函数g = f(x,y)绘制3D表面,使用Functio
0 2024-01-08
编程技术问答社区
r plotly 3d曲面图的问题
我正在尝试根据这些当我在数据集上尝试这些示例时 test_plotly = structure(list(Age = c(82L, 82L, 83L, 83L, 83L, 81L, 81L, 81L, 79L, 80L, 82L, 78L, 78L, 79L, 78L, 80L, 79L, 77L, 77L, 77L, 77L, 78L, 76L, 77L, 77L, 78L, 77L, 76L, 83L, 79L, 76L, 84L, 75L, 75L, 77L, 74L, 74L, 75L, 74L, 74L, 73L, 73L, 74L, 81L, 84L, 73L, 72L, 73L, 71L, 71L, 73L, 72L, 79L, 72L, 71L, 76L, 72L, 75L, 73L, 71L, 70L, 79L, 69L, 70L, 70L, 70L, 77L, 69L, 69L, 68L,
4 2024-01-08
编程技术问答社区