Как я сериализирую перечисление значений как интервал?

Я полагаю, вы ищете capture_continuous.

Вот общий процесс:

  • Импорт необходимых пакетов
  • Пауза, чтобы позволить камере прогреться
  • Итерация по кадрам камеры 1111]
  • Захват и отображение кадра
    from picamera.array import PiRGBArray
    from picamera import PiCamera
    import time
    import cv2
    
    # initialize the camera and grab a reference to the raw camera capture
    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.framerate = 32
    rawCapture = PiRGBArray(camera, size=(640, 480))
    
    # allow the camera to warmup
    time.sleep(0.1)
    
    # capture frames from the camera
    for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
        image = frame.array
    
        # show the frame
        cv2.imshow("Frame", image)
        key = cv2.waitKey(1) & 0xFF
    
        # clear the stream in preparation for the next frame
        rawCapture.truncate(0)
    
        # if the `q` key was pressed, break from the loop
        if key == ord("q"):
            break
    
76
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

Большую часть времени люди хотят имена, не ints. Вы могли добавить свойство контейнера для цели?

[XmlIgnore]
public MyEnum Foo {get;set;}

[XmlElement("Foo")]
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
public int FooInt32 {
    get {return (int)Foo;}
    set {Foo = (MyEnum)value;}
}

Или Вы могли использовать IXmlSerializable, но это - большая работа.

68
ответ дан Marc Gravell 24 November 2019 в 11:07
поделиться

См. полную программу Консольного приложения в качестве примера ниже для интересного способа достигнуть того, что Вы ищете использование DataContractSerializer:

using System;
using System.IO;
using System.Runtime.Serialization;

namespace ConsoleApplication1
{
    [DataContract(Namespace="petermcg.wordpress.com")]
    public class Request
    {
        [DataMember(EmitDefaultValue = false)]
        public RequestType request;
    }

    [DataContract(Namespace = "petermcg.wordpress.com")]
    public enum RequestType
    {
        [EnumMember(Value = "1")]
        Booking = 1,
        [EnumMember(Value = "2")]
        Confirmation = 2,
        [EnumMember(Value = "4")]
        PreBooking = 4,
        [EnumMember(Value = "5")]
        PreBookingConfirmation = 5,
        [EnumMember(Value = "6")]
        BookingStatus = 6
    }

    class Program
    {
        static void Main(string[] args)
        {
            DataContractSerializer serializer = new DataContractSerializer(typeof(Request));

            // Create Request object
            Request req = new Request();
            req.request = RequestType.Confirmation;

            // Serialize to File
            using (FileStream fileStream = new FileStream("request.txt", FileMode.Create))
            {
                serializer.WriteObject(fileStream, req);
            }

            // Reset for testing
            req = null;

            // Deserialize from File
            using (FileStream fileStream = new FileStream("request.txt", FileMode.Open))
            {
                req = serializer.ReadObject(fileStream) as Request;
            }

            // Writes True
            Console.WriteLine(req.request == RequestType.Confirmation);
        }
    }
}

содержание request.txt следующим образом после вызова к WriteObject:

<Request xmlns="petermcg.wordpress.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <request>2</request>
</Request>

Вам будет нужна ссылка на блок System.Runtime.Serialization.dll для DataContractSerializer.

13
ответ дан Peter McG 24 November 2019 в 11:07
поделиться

Смотрите на Систему. Класс Enum. Метод Синтаксического анализа преобразовывает строку или международное представление в Перечислимый объект, и метод ToString преобразовывает Перечислимый объект в строку, которая может быть сериализирована.

-1
ответ дан Glenn 24 November 2019 в 11:07
поделиться

Самый простой способ - использовать атрибут [XmlEnum] примерно так:

[Serializable]
public enum EnumToSerialize
{
    [XmlEnum("1")]
    One = 1,
    [XmlEnum("2")]
    Two = 2
}

Это будет сериализовано в XML (скажем, что родительский класс - это CustomClass) примерно так:

<CustomClass>
  <EnumValue>2</EnumValue>
</CustomClass>
139
ответ дан miha 24 November 2019 в 11:07
поделиться
Другие вопросы по тегам:

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