Открыть CV - невозможно выполнить код Python, имеющий cv2

Я использую систему CL-SOM-AM57x - TI AM5728 / AM5718 и загружаю ее с помощью модуля запуска матричных приложений Ti на основе Linux Debian. Я пытаюсь разработать приложение на Python, которое можно запустить из графического интерфейса TI Matrix. С простым кодом Python приложение прекрасно работает в терминале (загружает и импортирует openCV и numpy), но когда я запускаю и запускаю приложение (создал Icon и приложение выполняется) из графического интерфейса TI, который не работает должным образом и показывает некоторые ошибки / предупреждения в терминале. Приложение открывается и печатает на экране значения, но похоже, что модуль OpenCV и Numpy не загружается или работает неправильно.

Таким образом, проблема в том, что тот же код работает на терминале, но не при запуске в приложении из графического интерфейса матрицы TI.

образец кода:

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)

Сценарий оболочки #!/ 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

[ 6860.073549] omap-iommu 41501000.mmu: 41501000.mmu: версия 3.0

[6860.079683] omap-iommu 41502000.mmu: 41502000.mmu: версия 3.0

[6860.093489] omap_hwmod: mmu0_dsp1: ошибка _wait_target_disable

[ 6860.099385] omap-iommu 40d01000.mmu: 40d01000.mmu: версия 3.0

[6860.105342] omap-iommu 40d02000.mmu: 40d02000.mmu: версия 3.0

[6870.136544] omap_hwmod: mmu1_dsp1: ошибка _wait_target_disable

[ 6870.149842] omap_hwmod: mmu0_dsp1: ошибка _wait_target_disable

[ 6870.163511] omap_hwmod: mmu1_dsp2: ошибка _wait_target_disable

[ 6870.176696] omap_hwmod: mmu0_dsp2: ошибка _wait_target_disable

Выход приложения:

4
None

Но если P запускает один и тот же код в терминале, то при использовании той же платы он работает нормально, а вывод дает матрицу массива. Мне нужно запустить это в приложении в матрице GUI и хотел бы получить тот же массив в качестве вывода. Какие-либо предложения?

2 ответа

Решение

Я нашел решение. "Даже если путь к изображению неверен, он не выдаст никакой ошибки, но print img не даст вам ничего". Что упоминается в документации openCV. Так что я изменил линию

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

в

img = cv2.imread ('/ usr / share / matrix-gui-2.0 / apps / ex_application / rgb.jpg')
#input полный каталог

Я озадачен тем, что вы ожидаете от этого кода. img уже np.ndarray, Создание идентичной копии жует вдвое больше памяти. (Вы можете проверить его идентичность, выполнив np.all(img == np_image) из питона REPL. Должен ответить True.) Преобразование одного из них в Python list жует еще больше памяти, а преобразование списка Python в строку жует много.

Я не знаком с используемой вами платой, но быстрый поиск показывает, что она имеет ограниченную оперативную память. Может быть, то, что вы видите, является побочным эффектом нехватки памяти на плате?

Другие вопросы по тегам