Opencv - 无法执行 python 具有 cv2 的代码

Open CV -unable to execute python code having cv2

我正在使用 CL-SOM-AM57x - TI AM5728 / AM5718 系统级模块并使用基于 Linux Debian 的 Ti 矩阵应用程序启动器加载它。我正在尝试开发一个可以从 TI Matrix GUI 启动的 python 应用程序。使用简单的 python 代码,该应用程序在终端中运行良好(加载并导入 openCV 和 numpy),但是当我启动并 运行 该应用程序(已创建图标并且该应用程序正在执行)时,来自 TI 矩阵 GUI 不' 正常工作并在终端中显示一些 errors/warnings。该应用程序正在打开并在屏幕上打印值,但看起来 OpenCV 模块和 numpy 未加载或无法正常工作。

所以问题是相同的代码在终端上有效,但在从 TI 矩阵 GUI 的应用程序中启动时却无效。

示例代码:

import numpy as np

import cv2

img = cv2.imread('rgb.jpg')

np_image = np.array(img)

num_list = np_image.tolist()

str1 =str(num_list)

print( len(str1))

print(str1)

Shell 脚本 #!/bin/bash

/usr/bin/python2.7 /usr/share/matrix-gui-2.0/apps/ex_application/1.py

终端错误:

[ 6860.067644] omap_hwmod: mmu0_dsp2: _wait_target_disable failed

[ 6860.073549] omap-iommu 41501000.mmu: 41501000.mmu: version 3.0

[ 6860.079683] omap-iommu 41502000.mmu: 41502000.mmu: version 3.0

[ 6860.093489] omap_hwmod: mmu0_dsp1: _wait_target_disable failed

[ 6860.099385] omap-iommu 40d01000.mmu: 40d01000.mmu: version 3.0

[ 6860.105342] omap-iommu 40d02000.mmu: 40d02000.mmu: version 3.0

[ 6870.136544] omap_hwmod: mmu1_dsp1: _wait_target_disable failed

[ 6870.149842] omap_hwmod: mmu0_dsp1: _wait_target_disable failed

[ 6870.163511] omap_hwmod: mmu1_dsp2: _wait_target_disable failed

[ 6870.176696] omap_hwmod: mmu0_dsp2: _wait_target_disable failed

应用输出:

4
None

但是如果 P 运行 在终端中使用相同的代码,使用相同的板它工作正常并且输出给出数组矩阵。我需要在矩阵 GUI 中的应用程序上 运行 这个,并希望获得与输出相同的数组。 有什么建议吗?

我对您期望该代码执行的操作感到困惑。 img 已经 np.ndarray。创建相同的副本会占用双倍的内存。 (您可以通过从 Python REPL 执行 np.all(img == np_image) 来验证它是否相同。它应该响应 True。)将其中一个转换为 Python list消耗更多内存,将 Python 列表转换为字符串会消耗更多内存。

我不熟悉您使用的主板,但快速搜索表明它的 RAM 有限。难道你看到的是 运行 板上内存不足的副作用?

我找到了解决方案。 "Even if the image path is wrong, it won’t throw any error, but print img will give you None".openCV 文档中提到了这一点。 所以我更改了行

img = cv2.imread('rgb.jpg')

img = cv2.imread('/usr/share/matrix-gui-2.0/apps/ex_application/rgb.jpg')
#输入完整目录