Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
38 / 32 / 7
Регистрация: 03.02.2025
Сообщений: 113

Ускорение Python с помощью внешней библиотеки DLL на Lazarus

15.03.2025, 01:11. Показов 2591. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Как известно Python во много раз медленнее чем другие компилируемые языки. Вот я сделал простую программу которая открывает видеофайл и переводит видео в негатив и выводит на экран результат. Размер картинки 720х576 пикселей. Скорость у данной программы 0.5 фпс. То есть один кадр обрабатывается 2 секунды. Можно ли сделать DLL библиотеку на Lazarus в которую будут передаваться картинки из видео, там превращаться в негатив и возвращаться обратно в Python программу для дальнейшей обработки. Пока что бы только выводить на экран.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# импортируем модуль opencv
import cv2
#from negativ import *
 
# создадим объект VideoCapture для захвата видео
cap = cv2.VideoCapture('E:\\Zakaz\\844 Elvira\\Видеокассеты Большие\\Кассета 1.mp4')
 
# Если не удалось открыть файл, выводим сообщение об ошибке
if cap.isOpened() == False:
    print('Не возможно открыть файл')
 
# создадим функцию для отображения отрицательного изображения
def neg(freim):
    img_bgr = freim
    height, width, _ = img_bgr.shape
    for i in range(0, height - 1):
        for j in range(0, width - 1):
            # Get the pixel value
            pixel = img_bgr[i, j]
            pixel[0] = 255 - pixel[0]
            pixel[1] = 255 - pixel[1]
            pixel[2] = 255 - pixel[2]
            # Store new values in the pixel
            img_bgr[i, j] = pixel
    return img_bgr
 
# Пока файл открыт
while cap.isOpened():
    # поочередно считываем кадры видео
    fl, img = cap.read()
    # если кадры закончились, совершаем выход
    if img is None:
        break
    # выводим текущий кадр на экран
    img = neg(img)
    cv2.imshow("Cat", img)
    # при нажатии клавиши "q", совершаем выход
    if cv2.waitKey(25) == ord('q'):
        break
 
# освобождаем память от переменной cap
cap.release()
# закрываем все открытые opencv окна
cv2.destroyAllWindows()
Миниатюры
Ускорение Python с помощью внешней библиотеки DLL на Lazarus  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2025, 01:11
Ответы с готовыми решениями:

Чтение dll библиотеки написанной на C++ Builder 5 в Lazarus
Чтение dll библиотеки написанной на C++ Builder 5 в проекте Lazarus версии 2.0.4 с FPC 3.0.4 Возможно ли прочитать DLL библиотеку...

Подключение внешней библиотеки (dll) для работы с внешним API
Добрый день, друзья! Начал недавно изучать C#. Опыта мало. Учусь. Теперь к вопросу: Есть сервис RDS, который по API может...

Подключение библиотеки классов dll C# к python
Подскажите, как подключить библиотеку классов dll, написанную на C# к python 3.9 в PyCharm 2024

13
38 / 32 / 7
Регистрация: 03.02.2025
Сообщений: 113
15.03.2025, 01:16  [ТС]
Возможность распараллеливания программы на потоки в Python 3.13 пока не рассматриваю. Это потом когда руки дойдут. А пока хочу попробовать создавать библиотеки DLL.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,663
Записей в блоге: 29
15.03.2025, 08:56
Цитата Сообщение от Eduard1977 Посмотреть сообщение
чем другие компилируемые языки
а он и не компилируемый

Цитата Сообщение от Eduard1977 Посмотреть сообщение
Можно ли сделать DLL библиотеку на Lazarus
ну с С и раст точно можно взаимодействовать, только если уж брать другие языки, то зачем тут питон? почему все не написать на компилируемом?
1
352 / 315 / 83
Регистрация: 17.04.2022
Сообщений: 1,028
Записей в блоге: 8
15.03.2025, 10:59
Цитата Сообщение от Eduard1977 Посмотреть сообщение
Вот я сделал простую программу которая открывает видеофайл и переводит видео в негатив и выводит на экран результат.
попробуйте использовать библиотеку, заточенную на работу с видео, например, https://github.com/kkroening/ffmpeg-python
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2062 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
15.03.2025, 11:21
Цитата Сообщение от Eduard1977 Посмотреть сообщение
создадим функцию для отображения отрицательного изображения
откройте для себя NumPy

Добавлено через 1 минуту
Кроме того в OpenCV много встроенных функций для обработки изображений.
0
45 / 37 / 10
Регистрация: 25.02.2025
Сообщений: 84
15.03.2025, 12:17
Свой модуль для Python можно сделать на С, С++, Rust.
https://docs.python.org/3/extending/index.html
0
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,750
16.03.2025, 21:12
Eduard1977, никогда не используйте циклы при работе с с изображением на Python.
Python
1
neg=~frame
все.
0
38 / 32 / 7
Регистрация: 03.02.2025
Сообщений: 113
17.03.2025, 17:48  [ТС]
Здравствуйте. У меня нет конкретной задачи которую сейчас надо решить. Пример который я привел просто тестовый. Я просто хочу попробовать сам механизм создания DLL для Python. Короче, похоже придётся изучать C++ , так как он больше всего подходит для написания DLL для Python.
0
Эксперт .NET
 Аватар для Usaga
14071 / 9289 / 1346
Регистрация: 21.01.2016
Сообщений: 34,850
18.03.2025, 05:53
Eduard1977, для написания DLL подойдёт много чего: С, С++, Lazarus, Rust, Go. Только сразу встаёт вопрос, а зачем смешивать это с питоном?..
0
38 / 32 / 7
Регистрация: 03.02.2025
Сообщений: 113
18.03.2025, 15:44  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
для написания DLL подойдёт много чего: С, С++, Lazarus, Rust, Go. Только сразу встаёт вопрос, а зачем смешивать это с питоном?..
Ну другие модули пишут же на C например Pygame, Pillow, NumPy и много других модулей написаны на С или C++. Для ускорения процесса. Мне конечно далеко ещё писать свой собственный модуль. Пока решил научится писать библиотеки DLL.
0
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
15.04.2025, 19:06
Во первых, Lazarus - это мертворожденный язык.
Во вторых, dll - это виндовс, а под виндовс на питоне не пишут (я имею в виду, в статистически значимых количествах).
Во третьих и в главных, написание бинарника - это практически ненужный навык. В реальном продакшне такая задача встаёт крайне редко, а если вдруг встанет - напишете, т. к. уже будет общий опыт. А не нужно писать бинарники, потому что для питона есть готовые библиотеки, скомпилированные и оптимизированные (в отличие от Delphi, из которого вы, видимо, пришли и ещё не привыкли.) Это в четвёртых.
1
38 / 32 / 7
Регистрация: 03.02.2025
Сообщений: 113
18.09.2025, 18:09  [ТС]
А почему ни кто не сказал про Cython? В нем можно ускорить скорость программы аж в 1000 раз, если код позволит. Вдобавок в Cython можно включать модули на языке C/C++.
0
5514 / 2867 / 571
Регистрация: 07.11.2019
Сообщений: 4,750
19.09.2025, 08:56
Eduard1977, во-первых, в изначальном вопросе этого не было, во-вторых для вашей конкретной задачи обработки видео это не поможет. Поможет ускорить правильное использование OpenCV, а не как у вас...
0
Эксперт .NET
 Аватар для Usaga
14071 / 9289 / 1346
Регистрация: 21.01.2016
Сообщений: 34,850
19.09.2025, 09:01
Цитата Сообщение от Eduard1977 Посмотреть сообщение
А почему ни кто не сказал про Cython?
Возможно потому, что люди не любят заниматься байдой) Если хочется питона, то пиши на питоне. Если не достаточно его производительности, то берут другой язык. А Cython это костыль. Не, если он для тебя решает твои задачи, то это замечательно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2025, 09:01
Помогаю со студенческими работами здесь

GDI+ и заливка с помощью методов библиотеки GDI32.dll
Делаю аналог Paint, возникла проблема: необходимо залить область цветом или штрихованной кистью. Заливаю при помощи методов из gdi32.dll, ...

Получение данных о шрифте с помощью библиотеки gdi32.dll
Задача состоит в том, чтобы определить, какие символы не прорисовываются при использовании данного шрифта (когда вместо символов появляются...

Трансляция звука по локальной сети с помощью протокола UDP и библиотеки BASS.DLL
Получилась программа, которая передает звук с микрофона в сеть и принимает его. Теперь надо сделать такую же передачу, но не с микрофона, а...

Создание dll библиотеки в C#. Вызов классов этой библиотеки
мне нужно как то создать динамическую библиотеку класов в си шарп, основой этой библиотеки должен быть абстрактный класс, от которого будут...

Подключение внешней библиотеки
Необходимо подключить внешнюю библиотеку и вызвать в ней функцию. Вот исходный код главной формы: unit Unit1; {$mode...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru