小编ami*_*koy的帖子

如何处理 Python 代码中的“MemoryError”

我有一段 python 代码,它会MemoryError在一段时间后生成。我知道它会消耗大量内存。所以,我决定把代码放在一个try/except块中,这样骨架看起来像下面这样:

while True:

      while True:

            try:
            #---- do some stuff

            except MemoryError as err:
                   print(err)
                   break
Run Code Online (Sandbox Code Playgroud)

所以,我的想法是while在 aMemoryError发生时跳出第一个循环,因为我有一个外部while循环,它将再次启动程序。

似乎它暂时有效,但我不确定。过了一会儿,它再次停止,我需要再次重新启动程序。有人知道更好的解决方案,以便程序可以MemoryError再次运行吗?

python exception-handling

5
推荐指数
1
解决办法
2万
查看次数

Android - 使用 Renderscript 和 Camera2 API 处理相机数据

下面我想展示我的自定义相机应用程序代码的片段。我的目标是对传入的视频帧应用过滤器并输出它们。为此,我使用 Renderscript 和 Camera2。

这是我的 MainActivity.java (因为它有点长,我删除了处理获取相机权限的方法):

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    private static final int REQUEST_CAMERA_PERMISSION_RESULT = 0;

    private TextureView mTextureView;
    private Button mButton;
    private CameraDevice mCameraDevice;
    private String mCameraId;
    private HandlerThread mBackgroundHandlerThread;
    private Handler mBackgroundHandler;
    private Size mPreviewSize;
    private CaptureRequest.Builder mCaptureRequestBuilder;
    private RsSurfaceRenderer mRenderer;
    private Surface mPreviewSurface;
    private Surface mProcessingNormalSurface;
    private RsCameraPreviewRenderer cameraPreviewRenderer;
    private RenderScript rs;
    private List<Surface> mSurfaces;

    private Toast rendererNameToast;
    private String rendererName;

    private int currentRendererIndex = 0; …
Run Code Online (Sandbox Code Playgroud)

java android landscape-portrait android-camera2

5
推荐指数
1
解决办法
976
查看次数

使用 RenderScript 为纵向模式旋转 YUV 图像数据

对于视频图像处理项目,我必须旋转传入的 YUV 图像数据,以便数据不是水平显示而是垂直显示。我使用了这个项目,它让我深入了解了如何将 YUV 图像数据转换为 ARGB 以实时处理它们。该项目的唯一缺点是它仅在景观中。没有纵向模式选项(我不知道为什么 Google 的人提供了一个仅处理横向的示例示例)。我想改变这一点。

因此,我决定使用自定义的 YUV 转 RGB 脚本来旋转数据,使其以纵向模式显示。以下 GIF 演示了应用程序如何在我应用任何旋转之前显示数据。

在此处输入图片说明

你必须知道,在 Android 中,即使设备处于纵向模式,YUV 图像数据也会以横向呈现(我在开始这个项目之前不知道。同样,我不明白为什么没有可用的方法可用于通过一次调用来旋转帧)。这意味着即使设备处于纵向模式,起点也在左下角。但是在纵向模式下,每一帧的起点应该在左上角。我对字段使用矩阵表示法(例如 (0,0)、(0,1) 等)。注意:我从这里拿了草图: 在此处输入图片说明

要旋转横向框架,我们必须重新组织字段。这是我对草图(见上文)所做的映射,它显示了yuv_420横向模式下的单个帧。映射应将框架旋转 90 度:

first column starting from the bottom-left corner and going upwards:
(0,0) -> (0,5)       // (0,0) should be at (0,5)
(0,1) -> (1,5)       // (0,1) should be at (1,5)
(0,2) -> (2,5)       // and so on ..
(0,3) -> (3,5)
(0,4) -> (4,5)
(0,5) -> (5,5)

2nd column starting at …
Run Code Online (Sandbox Code Playgroud)

android yuv renderscript landscape-portrait android-camera2

5
推荐指数
1
解决办法
727
查看次数