Python - графика

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Re: Python - графика

Непрочитанное сообщение Lepton » 28 ноя 2015, 14:01

OpenCV-Python
Wikipedia: OpenCV (Open Computer Vision Library) - библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым исходным кодом.

Пример обнаружения объектов на изображении:
(выполнено эксклюзивно для seocod.ru) :lol:

Код: Выделить всё

#!/usr/bin/python
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import sys

scf = 1.30
scfact = 1.00

color = (0,0,255)
strokeWeight = 3

cascade = cv2.CascadeClassifier('haarcascade_breast.xml')

cv2.namedWindow('Censored',cv2.WINDOW_NORMAL)

if len(sys.argv) != 2:
    print "No input image given. Correct Usage : python CensorBreast.py <filename> \n"
    raise SystemExit(1)

filename = sys.argv[1]

def nothing(*argv):
    pass

def trackbar():
    global scfact
    r = cv2.getTrackbarPos('BreastDet','Censored')
    scfact = 1.07+0.01*r
    return scfact

def update():
    img = cv2.imread(filename)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    rects = cascade.detectMultiScale(gray, scfact, 2)

    for (x,y,w,h) in rects:
        cv2.rectangle(img, (x,y), (x+w,y+h), color, -1)
        cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), strokeWeight)

    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img,'ScaleFactor:'+str(scfact),(10,30), font, 1,(255,0,0),2,cv2.LINE_AA)

    cv2.imshow('Censored',img)

cv2.createTrackbar('BreastDet','Censored',0,50,nothing)

while (1):
    k = cv2.waitKey(25) & 0xFF
    if k == 27:
        break

    trackbar()

    if scf == scfact:
        pass
    else:
       update()
       scf = scfact
cv2.destroyAllWindows()
PytonOpenCV.png

LanuHum
Интересующийся
Сообщения: 7
Зарегистрирован: 06 фев 2016, 23:32
Контактная информация:

Re: Python - графика

Непрочитанное сообщение LanuHum » 07 фев 2016, 02:30

Когда пытался писать на питоне 2, лучшим считал wxPython. Очень долго Феникс возрождался из пепла. wxPhoenix - это wx на третьем питоне. Ещё поглюкивает, и, нет функции getpixel, что не позволило мне использовать его для написания утилитки к Поврею, создающей градиенты с пятью параметрами: RGBFT. Пришлось использовать pyQt4. Тоже глючит, когда дело касается графики в графике. Я это о том, что одно дело графическое приложение, а, другое дело, когда графическое приложение для работы с графикой 2D. Tkinter для этого не годится, хотя, можно поизвращаться. Qt очень трудно работает с альфой,оставляя артефакты, если изменения производятся по событиям мыши. Приходится конвертировать QPixmap в QImage, QImage в QBitmap, QBitmap в QPixmap и так далее. У wx такого не наблюдал - GC (graphic context) там работает чётко, и Cairo в wx - это тоже хорошо.
Вложения
editor.py
(21.85 КБ) 252 скачивания
gradient_editor.jpg

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python - графика

Непрочитанное сообщение Olej » 07 фев 2016, 15:41

LanuHum писал(а):Когда пытался писать на питоне 2, лучшим считал wxPython. Очень долго Феникс возрождался из пепла. wxPhoenix - это wx на третьем питоне.
Могу заметить к вашему тексту только следующее (остальных описываемых деталей я не знаю):
- обратили ли вы внимание на то событие (в мире Python), которое произошло в конце прошлого года (в конце ноября)?
- а именно то, что вышла Fedora 23, в которой дефаултной версией объявлен Python3 (с заменой наконец yum на dnf)
- а поскольку на сегодня всё развитие и программного кода и состава и тенденций Linux идёт исключительно в линии (и силами) RedHat (ну ещё чуть-чуть в OpenSUSE, но похоже что это заканчивается), а остальные дистрибутивы только бесстыже заимствуют оттуда, то это означает полный и бесповоротный конец Python 2 и скорый повсеместный переход на Python 3.

LanuHum
Интересующийся
Сообщения: 7
Зарегистрирован: 06 фев 2016, 23:32
Контактная информация:

Re: Python - графика

Непрочитанное сообщение LanuHum » 07 фев 2016, 18:17

Olej писал(а):
LanuHum писал(а):Когда пытался писать на питоне 2, лучшим считал wxPython. Очень долго Феникс возрождался из пепла. wxPhoenix - это wx на третьем питоне.
Могу заметить к вашему тексту только следующее (остальных описываемых деталей я не знаю):
- обратили ли вы внимание на то событие (в мире Python), которое произошло в конце прошлого года (в конце ноября)?
- а именно то, что вышла Fedora 23, в которой дефаултной версией объявлен Python3 (с заменой наконец yum на dnf)
- а поскольку на сегодня всё развитие и программного кода и состава и тенденций Linux идёт исключительно в линии (и силами) RedHat (ну ещё чуть-чуть в OpenSUSE, но похоже что это заканчивается), а остальные дистрибутивы только бесстыже заимствуют оттуда, то это означает полный и бесповоротный конец Python 2 и скорый повсеместный переход на Python 3.
Намного ранее, я читал, что очередной релиз OpenMandriva выйдет с питоном 3 по умолчанию.
OpenMandriva Lx 3 Pre-Alpha - DistroWatch.com
distrowatch.com/8798
Перевести эту страницу
4 февр. 2015 г. - From the release announcement: "Pre-alpha OpenMandriva Lx 3 is here. ... using Python 3 as the default Python interpreter and the distribution ...

Вообще, есть какая-то связь между Федорой и Мандривой, о которой нигде не говорится. Я это вижу, когда пересобираю федорин rpms пакет для мандривы\магеи. Никто ни на что не ругается, то есть, одни и те же скрипты используются...


Я не считаю это большой радостью, ибо ведущие программы линукса вряд ли уже готовы юзать python 3. GIMP, Inkscape, FontForge... Если эти программы подлатают свои биндинги под третий питон - появится реальное поле для творчества. :-)
В своём экспортёре я использовал fontforge для создания объектов из кривых, представляемых как некий шрифт. Поврей принимал эти объекты как шрифты, и, соответственно, обрабатывал их делая скосы, скругления, отсечения. Прикольная была фишка, но из-за второго питона вызывалась через subprocess, что ни есть гуд.
Я один из тех немногих, которых интересует нечто немодное ныне. Мне интересна компьютерная графика ни как общее устремление профи к пределам ферм для создания супер-пупер эффектов, которые на десктопе создать, практически, невозможно. Я, просто рад тому, что могу создать на десктопе в свободное от работы время.

LanuHum
Интересующийся
Сообщения: 7
Зарегистрирован: 06 фев 2016, 23:32
Контактная информация:

Re: Python - графика

Непрочитанное сообщение LanuHum » 07 фев 2016, 23:30

Olej, надеюсь, что ты понял, что был обманут. Федора не является законодателем в линуксе. Более, чем полгода ранее о переходе на питон 3 объявила Мандрива. Линуксом движет Мандрива, вернее, сообщество, которое себя ассоциирует с этим именем: Mandrake. Это самые крутые перцы ныне на Земле в области дарить людям безвозмездно, и, я их уважаю. Несмотря на финансовые трудности, именно, они рисуют карту пути линукса. Именно, поэтому моим линуксом будет Mandrake, как бы он теперь не назывался: Rosa, Mageia, OpenMandriva, или ещё как. Главное, что устанавливаешь дистибутив, и, видишь, что ты пришёл домой.
Очень люблю читать мнения на хабре. Там видно, кто оплачен, а кто от чистого сердца. И, кто от чистого сердца, тот ругает GTK, тех, кто им потокает, кто в ограниченных возможностях видит звёзды и путь к ним. Типа tkinter лучший! Худший он, самый худший из всех худых. Нельзя нарисовать звёзды веником.

LanuHum
Интересующийся
Сообщения: 7
Зарегистрирован: 06 фев 2016, 23:32
Контактная информация:

Re: Python - графика

Непрочитанное сообщение LanuHum » 08 фев 2016, 00:01

А, вот здесь я родился и вырос:
Изображение
Пять лет я ходил из нижнего левого угла в центр картинки, чтобы играть на домре в музыкальной школе...И, мысль о том, что я там больше никогда не пройдусь - самая печальная из всех мыслей
, ведь, когда я сделал туда первый шаг, мне было всего шесть лет. А теперь мне 50. Haskell отдыхает... :-?

Аватара пользователя
Lepton
Писатель
Сообщения: 73
Зарегистрирован: 18 окт 2011, 20:26
Контактная информация:

Re: Python - графика

Непрочитанное сообщение Lepton » 26 мар 2016, 15:02

Wrapper Python-Allegro (Allegro-5.1.13.1)
http://liballeg.org/
Аллегро - кроссплатформенная библиотека для создания игр и мультимедиа приложений
1. Создания окна
2. Ввод даных с различных устройств
3. Загрузка ресурсов
4. Рисование изображений
5. Проигрывание звуков
6. Шейдеры
7. Поддержка 3D
phpBB [video]

Код: Выделить всё

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from allegro import *
import os

FPS = 60
SCREEN_W = 640
SCREEN_H = 480
BOUNCER_SIZE = 32

def main():
    done = False
    redraw = True
    bouncer_x = SCREEN_W / 2.0 - BOUNCER_SIZE / 2.0
    bouncer_y = SCREEN_H / 2.0 - BOUNCER_SIZE / 2.0
    bouncer_dx = -4.0 
    bouncer_dy = 4.0

    if not al_install_system(ALLEGRO_VERSION_INT, None):
        abort_example("Failed to init Allegro.\n")
        sys.exit(1)
    al_init_font_addon()
    al_init_ttf_addon()
    font = al_load_ttf_font("font.ttf",72,0 )

    timer = al_create_timer(1.0 / FPS)
    display = al_create_display(SCREEN_W, SCREEN_H)
    bouncer = al_create_bitmap(BOUNCER_SIZE, BOUNCER_SIZE)
    al_set_target_bitmap(bouncer)
    al_clear_to_color(al_map_rgb(255, 0, 255))
    al_set_target_bitmap(al_get_backbuffer(display))

    event_queue = al_create_event_queue()
    al_register_event_source(event_queue, al_get_display_event_source(display))
    al_register_event_source(event_queue, al_get_timer_event_source(timer))

    al_clear_to_color(al_map_rgb(0,255,0))
    al_flip_display()

    al_start_timer(timer)

    while not done:
        event = ALLEGRO_EVENT()
        al_wait_for_event(event_queue, byref(event))
        if event.type == ALLEGRO_EVENT_TIMER:
           if (bouncer_x < 0 or bouncer_x > SCREEN_W - BOUNCER_SIZE):
               bouncer_dx = -bouncer_dx
           if (bouncer_y < 0 or bouncer_y > SCREEN_H - BOUNCER_SIZE):
               bouncer_dy = -bouncer_dy
           bouncer_x += bouncer_dx
           bouncer_y += bouncer_dy

           redraw = True
        elif event.type == ALLEGRO_EVENT_DISPLAY_CLOSE:
           done = True

        if (redraw and al_is_event_queue_empty(event_queue)):
           redraw = False
           al_clear_to_color(al_map_rgb(0,255,0))
           al_draw_text(font, al_map_rgb(255,25,25), 640/2, 480/2.5,ALLEGRO_ALIGN_CENTRE, "Hello Allegro 5!")
           al_draw_rectangle(10.0, 10.0, 630.0, 470.0, al_map_rgb(0, 0, 255), 5.0)
           al_draw_bitmap(bouncer, bouncer_x, bouncer_y, 0)
           al_flip_display()

    al_destroy_bitmap(bouncer)
    al_destroy_timer(timer)
    al_destroy_display(display)
    al_destroy_event_queue(event_queue)
    al_uninstall_system()
al_main(main)
python_allegro.gif
Вложения
example.py
(2.22 КБ) 213 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python - графика

Непрочитанное сообщение Olej » 21 ноя 2017, 18:00

Olej писал(а):И говоря о графике Python, совершенно нельзя не упомнить Reinteract - совершенно прелестнейшая штучка:
Изображение
Изображение
Возникла необходимость, попытался проверить что там делается, использовать Reinteract ...

Код: Выделить всё

[olej@dell ~]$ uname -a
Linux dell.localdomain 4.8.14-100.fc23.x86_64 #1 SMP Mon Dec 12 20:52:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Код: Выделить всё

[olej@dell analys]$ dnf list reinteract*
Последняя проверка окончания срока действия метаданных: 13 days, 22:17:51 назад, Tue Nov  7 18:04:00 2017.
Доступные пакеты
reinteract.noarch                                                     0.5.9-11                                                     fedora

Код: Выделить всё

[olej@dell analys]$ udo dnf install reinteract
bash: udo: команда не найдена
[olej@dell analys]$ sudo dnf install reinteract
[sudo] пароль для olej: 
Зависимости разрешены.
=========================================================================================================================================
 Package                                  Архитектура               Версия                              Репозиторий                Размер
=========================================================================================================================================
Установка:
 pyparsing                                noarch                    2.1.5-1.fc23                        updates                     11 k
 python-dateutil                          noarch                    1:2.4.2-2.fc23                      fedora                      88 k
 python2-matplotlib                       x86_64                    1.4.3-14.fc23                       updates                     35 M
 python2-matplotlib-tk                    x86_64                    1.4.3-14.fc23                       updates                     80 k
 python2-pyparsing                        noarch                    2.1.5-1.fc23                        updates                    118 k
 pytz                                     noarch                    2015.4-1.fc23                       fedora                      60 k
 reinteract                               noarch                    0.5.9-11                            fedora                     305 k

Результат операции
=========================================================================================================================================
Установка  7 Пакетов

Объем загрузки: 36 M
Объем изменений: 67 M
Продолжить? [д/Н]: y
Загрузка пакетов:
(1/7): python2-matplotlib-tk-1.4.3-14.fc23.x86_64.rpm                                                    176 kB/s |  80 kB     00:00    
(2/7): python-dateutil-2.4.2-2.fc23.noarch.rpm                                                           457 kB/s |  88 kB     00:00    
(3/7): reinteract-0.5.9-11.noarch.rpm                                                                    465 kB/s | 305 kB     00:00    
(4/7): pyparsing-2.1.5-1.fc23.noarch.rpm                                                                  72 kB/s |  11 kB     00:00    
(5/7): pytz-2015.4-1.fc23.noarch.rpm                                                                     314 kB/s |  60 kB     00:00    
(6/7): python2-pyparsing-2.1.5-1.fc23.noarch.rpm                                                         599 kB/s | 118 kB     00:00    
(7/7): python2-matplotlib-1.4.3-14.fc23.x86_64.rpm                                                       2.7 MB/s |  35 MB     00:13    
-----------------------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                                             2.5 MB/s |  36 MB     00:14     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : python2-pyparsing-2.1.5-1.fc23.noarch                                                                               1/7 
  Установка    : pyparsing-2.1.5-1.fc23.noarch                                                                                       2/7 
  Установка    : pytz-2015.4-1.fc23.noarch                                                                                           3/7 
  Установка    : python-dateutil-1:2.4.2-2.fc23.noarch                                                                               4/7 
  Установка    : python2-matplotlib-tk-1.4.3-14.fc23.x86_64                                                                          5/7 
  Установка    : python2-matplotlib-1.4.3-14.fc23.x86_64                                                                             6/7 
  Установка    : reinteract-0.5.9-11.noarch                                                                                          7/7 
  Проверка     : reinteract-0.5.9-11.noarch                                                                                          1/7 
  Проверка     : python2-matplotlib-1.4.3-14.fc23.x86_64                                                                             2/7 
  Проверка     : python2-matplotlib-tk-1.4.3-14.fc23.x86_64                                                                          3/7 
  Проверка     : python-dateutil-1:2.4.2-2.fc23.noarch                                                                               4/7 
  Проверка     : pytz-2015.4-1.fc23.noarch                                                                                           5/7 
  Проверка     : pyparsing-2.1.5-1.fc23.noarch                                                                                       6/7 
  Проверка     : python2-pyparsing-2.1.5-1.fc23.noarch                                                                               7/7 

Установлено:
  pyparsing.noarch 2.1.5-1.fc23                   python-dateutil.noarch 1:2.4.2-2.fc23      python2-matplotlib.x86_64 1.4.3-14.fc23     
  python2-matplotlib-tk.x86_64 1.4.3-14.fc23      python2-pyparsing.noarch 2.1.5-1.fc23      pytz.noarch 2015.4-1.fc23                   
  reinteract.noarch 0.5.9-11                     

Выполнено!
re1.png
re1.png (19.52 КБ) 3892 просмотра
Но как следует из следующей картинке, всё что с графикой, всё в Reinteract, который из репозитория - сломалось :lol: :
re3.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python - графика

Непрочитанное сообщение Olej » 21 ноя 2017, 18:06

Olej писал(а): Но как следует из следующей картинке, всё что с графикой, всё в Reinteract, который из репозитория - сломалось :lol: :
re3.png
На сайте проекта Reinteract последней обозначена версия:
29 Oct 2011 - Reinteract 0.5.9 released
Это она в репозитории и есть.
Похоже, что приятный было проект Reinteract - приказал долго жить. :cry:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Python - графика

Непрочитанное сообщение Olej » 29 дек 2017, 01:10

Хороший кратенький обзор практического использования графики: Научная графика в Python.
Изображение
Автор: Шабанов Павел Александрович
Дата последнего обновления: 11.03.2017
Показываются понятные примеры программного кода + та как это выглядит на графических картинках.
img1.png
img1.png (90.53 КБ) 3790 просмотров
Это очень удобно, когда нужно по быстрому продемонстрировать результаты своих вычислений.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 9 гостей