Python: я пропускаю что-то? [закрытый]

В итоге я удалил растровую часть кода. И это сработало! Поэтому ранее я преобразовывал кадр в растровое изображение, и он копировал пиксели из растрового изображения в Texture2D. Я посмотрел поближе и понял, что могу пропустить этот шаг растрового изображения. Прошу прощения за то, что недостаточно ясно дал понять по моему вопросу.

        /// <summary>
        /// Converts Frame to Texture
        /// </summary>
        /// <returns>Texture2D</returns>
        public Texture2D FrameToTexture2D()
        {
            Texture2D frameTex = new Texture2D(Memory.spriteBatch.GraphicsDevice, Decoder.CodecContext->width, Decoder.CodecContext->height, false, SurfaceFormat.Color);
            const int bpp = 4;
            byte[] texBuffer = new byte[Decoder.CodecContext->width * Decoder.CodecContext->height * bpp]; 
            fixed (byte* ptr = &texBuffer[0])
            {
                byte*[] srcData = { ptr, null, null, null };
                int[] srcLinesize = { Decoder.CodecContext->width * bpp, 0, 0, 0 };
                // convert video frame to the RGB data
                ffmpeg.sws_scale(ScalerContext, Decoder.Frame->data, Decoder.Frame->linesize, 0, Decoder.CodecContext->height, srcData, srcLinesize);
            }
            frameTex.SetData(texBuffer);
            return frameTex;
        }
15
задан Jonathon Watney 17 August 2009 в 17:48
поделиться

12 ответов

Я рекомендовал бы читать на Генераторах, Итераторах, itertools и прежде всего Понимания Списка.

Это столбы чего-либо Pythonic. И для всего остального, существует PEP-8.

Читайте на этих понятиях и попытайтесь использовать их везде, где соответствующее.Всего наилучшего!

PS: не забывайте import this ;)

Приложение: Я также агрегировал бы некоторые превосходные предложения, данные другими в этом потоке здесь:

36
ответ дан 30 November 2019 в 23:48
поделиться

Нет - это характерно для людей, которые перемещаются в Python от другого подобного языкам C. Я верю тому, что Вы ищете, способы сделать Ваш код большим количеством "Pythonic". Хорошими новостями является больше Python, который Вы пишете большему количеству Pythonic, которым станет Ваш код. Это - естественное переполнение, "как я могу сделать это проще" отношение.

Другое хорошее место для взгляда на является Дзэн Python. Эти отношения к разработке Python также помогут Вам в том же отношении.

16
ответ дан 30 November 2019 в 23:48
поделиться

Необходимо определенно смотреть на этот разговор, когда Вы начинаете делать системное программирование с Python: http://www.dabeaz.com/generators/

6
ответ дан 30 November 2019 в 23:48
поделиться

Вы получили хорошие предложения до сих пор. Я только добавил бы Погружение В Python.

Править: С 4 октября 2011, эта работа может быть найдена здесь. Погружение В Python 3, здесь. "Почему" это: посмотрите здесь, здесь и здесь.

7
ответ дан 30 November 2019 в 23:48
поделиться

Недавно я изучал/улучшал свой Python путем решения Euler проблем Проекта в Python. Это работало действительно хорошо на меня потому что:

  1. Интересно и конкурентоспособный, таким образом, я мотивирован, чтобы продолжать идти
  2. Это вынуждает меня использовать структуры данных Python действительно естественным способом получить производительность, в которой я нуждаюсь, так учил меня много спискам, наборам, строкам, повторение и т.д.
  3. Для большинства проблем нужна меньше чем страница кода для решения, таким образом, у Вас есть больше времени для размышления о полировке или перезаписи более изящным способом
  4. Python справляется с большими целыми числами действительно легко, и таким образом, просто похоже на правильный язык для использования

Я полностью рекомендовал бы это.

5
ответ дан 30 November 2019 в 23:48
поделиться

Для повторения TLHOLADAY считайте стандартную библиотеку. Это - то, где материал "pythonic". Если Вы не получаете хорошее ощущение там, то считанный источник из sqlachemy или django или Вашего предпочтительного проекта.

0
ответ дан 30 November 2019 в 23:48
поделиться

Я предложил бы найти персонального гуру Python. Покажите им часть своего кода и сделайте, чтобы они рассмотрели/переписали его в идиоматический Python. Таким образом будете Вы быть просвещенными.

0
ответ дан 30 November 2019 в 23:48
поделиться

В то время как сценарии сборки и сценарии подсказки [так] не являются действительно самой увлекательной технической разработкой, они - полностью кандидат на раскрытие истинного питания Python.

Во-первых, посмотрите на различное, уже как будто делают инструменты записанными в Python.

Важной персоной в этом водоеме является Scons: http://www.scons.org/. Узнайте об этом.

Это сообщение в блоге говорит об альтернативах http://farmdev.com/thoughts/46/the-python-make-tool/

"Я все еще хотел бы возможность иметь мой ум, унесенный", Запускаются с Google: найдите инструменты Python, которые уже делают некоторых или все из того, что Вы пытаетесь сделать. Кодируйте меньше, загрузите и читайте больше.

1
ответ дан 30 November 2019 в 23:48
поделиться

Напишите некоторый код Python и отправьте его на ТАК для обзора и обратной связи, является ли это pythonic.

2
ответ дан 30 November 2019 в 23:48
поделиться

Другой ресурс электростанции: Код Как Pythonista: Идиоматический Python.

2
ответ дан 30 November 2019 в 23:48
поделиться

Вы читаете Python, который Вы не записали?

Вот сценарий от распределения Python 2.6.1, которое удаляет .pyc и .pyo файлы.

#!/usr/local/bin/python
"""Recursively zap all .pyc and .pyo files"""
import os
import sys

# set doit true to actually delete files
# set doit false to just print what would be deleted
doit = 1

def main():
    if not sys.argv[1:]:
        if os.name == 'mac':
            import EasyDialogs
            dir = EasyDialogs.AskFolder(message='Directory to zap pyc files in')
            if not dir:
                sys.exit(0)
            zappyc(dir)
        else:
            print 'Usage: zappyc dir ...'
            sys.exit(1)
    for dir in sys.argv[1:]:
        zappyc(dir)

def zappyc(dir):
    os.path.walk(dir, walker, None)

def walker(dummy, top, names):
    for name in names:
        if name[-4:] in ('.pyc', '.pyo'):
            path = os.path.join(top, name)
            print 'Zapping', path
            if doit:
                os.unlink(path)

if __name__ == '__main__':
    main()

Сколько идиом Python можно найти в этом?

5
ответ дан 30 November 2019 в 23:48
поделиться

Добавить к ответам Andrew Hare и Baishampayan Ghose...

Изучить идиому любого языка должно вовлечь код чтения, написанный в ту идиому. Я все еще изучаю идиому Python, но я был через это с другими языками. Я могу читать о пониманиях списка, но лампочка только действительно продвигается, когда Вы видите такие используемые вещи и говорите, "Ничего себе! Это является потрясающим! Две строки кода и это совершенно прозрачны!" Поэтому пойдите, находят некоторый код pythonic, который Вы находите интересными и начинаете читать его и понимать его. Знание останется в Вашей голове лучше, если Вы будете видеть все в контексте рабочей программы.

3
ответ дан 30 November 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: