Hlavní navigace

Copak dlábí hadi 1

5. 1. 2013 16:51 Petr Blahoš

Obzvlášť pak hroznýš? Malé savce, ptáky, velký hroznýš pak i velké savce. Já tady po vzoru softwarové sklizně zkusím zveřejňovat odkazy na zajímavé knihovny pro Python či projekty v Pythonu, na které jsem narazil.

PyVISA MIT licence

Tohle není o kreditních kartách. Dostal se mi do rukou multimeter Agilent, který se dá připojit přes USB nebo LAN. Po nainstalování ovladačů a dokumentace na mě vyskočil pojem VISA – Virtual Instrument Software Architecture, což je jakýsi industry standard pro připojování zařízení – hlavně měřáků k počítači. Tahle knihovna umí připojení po USB, LAN, Serial, Linux i Windows. Jednoduše použitelná:

from visa import *
my_instrument = instrument("Instrument:1")
my_instrument.write("*IDN?")
print my_instrument.read()

Další věc, kterou pak musíte znát, jsou ty vlastní příkazy pro ovládání měřáků (SCPI). Najdete je v dokumentaci k tomu měřáku.

OpenCV BSD licence

Tohle je opravdu velká věc. Je to knihovna pro Computer Vision a já jsem ji našel, když jsem potřeboval zobrazovat video stream z kamery. Ve Windows jsou tyhle věci extrémně složité. S opencv to jde. A protože jsem to dlouho hledal, tak aspoň napíšu, jak v principu na to, s opencv-2.4.2:

import cv2

global camera
camera = None

def snap():
    global camera
    if camera is None:
        camera = cv2.VideoCapture(-1)
        camera.set(3, 960)   # set resolution
        camera.set(4, 720)
    if camera.isOpened():
        rval, frame = camera.read()
    else:
        rval = False
    if rval:
        return frame
    return None

def timer_handler(evt):
    frame = snap()
    if frame:
        set_image(frame)

global bmp
bmp = None
def set_image(frame):
    global bmp
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)   # moje kamera vrací BGR
    if bmp is None:
        bmp = wx.BitmapFromBuffer(len(frame[0]), len(frame), frame.tostring())
    else:
        bmp.CopyFromBuffer(frame.tostring())
    # ten bmp už si zobrazíte sami

Pořád ještě nejsem ve stavu, že bych řekl: Vykresluj výstup z kamery do tohoto okna, a driver by si to zařídil, ale takhle mi to pro teď stačí.

VideoCapture LGPL

Než jsem našel opencv, tak jsem zkoušel tohle. Bohužel to umí pouze sejmout jednotlivé obrázky a vrátit je jako PIL image, a dostanete z toho nanejvýš slideshow. Na druhou stranu je to malá knihovna, takže když vám slideshow stačí, tak proč ne.

ReportLab Toolkit BSD licence

Tohle už všichni znáte. Generuje pdfka. Jakákoliv pdfka. Umí asi vpodstatě vše, co byste tak v pdfkách chtěli, má nějaké nástroje pro generování layoutů a nějakých prvků (ty nejsložitější jsou tabulky a grafy). Je to rozsáhlá knihovna, ale začít s ní není až tak složité.

dmtx jako DataMatrix LGPL a BSD licence

Zatímco vygenerovat čárové kódy code39 nebo code128 je banální, s 2D kódama – konkrétně datamatrixem – je to o poznání složitější. Vlastně jediný použitelný projekt, který jsem před pár lety našel byl tento libdmtx. Tenkrát jsem si ho napojil sám přes ctypes, teď vidím, že už tam mají i python wrapper.
Pozn.: Pod pojmem použitelý si představuju: Dostatečně malý, dostatečně self-contained, funkční i ve Windows, s licencí použitelnou ve firmě.

To by pro dnešek mohlo stačit. Chtěl bych to brzo zopakovat, ale nečekejte něco každý týden, protože budu mít tendenci zde popisovat věci, které sám používám, nebo jsem je aspoň někdy použil.

Sdílet