Archiv für die 'Windows' Kategorie

„The Imaging Source“-Kamera mit Python auslesen

27. Oktober 2011 von edgar

Vermutlich funktionieren viele USB-Webcams unter Windows ganz einfach auch in Python mit Hilfe von OpenCV, wie zum Beispiel in diesem Artikel beschrieben.

Leider ließ sich meine Kamera, eine DMx 41AU02.AS von „The Imaging Source“ (TIS) nicht damit ansprechen. Trotz korrekter Installation aller Module (OpenCV, NumPy, SciPy) lieferte das Capture kein Bild zurück.

Lösen konnte ich das Problem mit einem weiteren Modul für Python: VideoCapture. Dieses Modul benötigt zusätzlich die Python Imaging Library (PIL). Hat man beides installiert, kann man folgendermaßen ein Bild auslesen und in eine Datei schreiben:
from VideoCapture import Device
cam = Device()
cam.saveSnapshot('image.jpg')

Quelle: http://videocapture.sourceforge.net/

Um das Bild nicht direkt abzuspeichern, sondern für die interne Verarbeitung zu capturen, benötigt man folgenden Befehl:
pil_img = cam.getImage()

Möchte man zusätzlich das Bild mit OpenCV weiterverarbeiten (zum Beispiel in einem Fenster anzeigen), dann muss man es zunächst konvertieren:

import cv
import PIL

cv_img = cv.CreateImageHeader(pil_img.size, cv.IPL_DEPTH_8U, 3) # RGB image
cv.SetData(cv_img, pil_img.tostring(), pil_img.size[0]*3

Quelle: http://stackoverflow.com/questions/1650568/how-do-i-create-an-opencv-image-from-a-pil-image

Zum Schluss habe ich noch ein komplettes Beispielprogramm, welches immer wieder ein Bild von der Kamera ausliest und in einem Fenster anzeigt, beenden kann man es mit „Esc“.
from VideoCapture import Device
import cv
import PIL

cam = Device()

cv.namedWindow("camera", 1)

#cam.displayCapturePinProperties() # Zum Einrichten der Kamera

while True:
    pil_img = cam.getImage()
    cv_img = cv.CreateImageHeader(pil_img.size, cv.IPL_DEPTH_8U, 3)
    cv.SetData(cv_img, pil_img.tostring(), pil_img.size[0]*3)
    cv.ShowImage("camera", cv_img)

    if cv.WaitKey(10) == 27:    # Achtung: ganz ohne WaitKey
        break                   # funktioniert namedWindow nicht!
cv.DestroyWindow("camera")

Der Vollständigkeit halber — folgende Programmversionen benutze ich dafür: Python 2.7, OpenCV 2.2, PIL 1.1.7, VideoCapture 0.9-4, NumPy 1.6.1, SciPy 0.9.0

Microsoft Security Essentials holt geplanten Scan nicht nach

18. Juli 2011 von edgar

Viele Menschen fragen sich, warum Microsoft Security Essentials (MSE) einen automatischen bzw. geplanten Scan nicht nachholt, wenn der Computer ausgeschaltet war. Es gibt zwar bei den Einstellungen ein Häkchen „Geplanten Scan nur starten, wenn der Computer eingeschaltet, aber nicht verwendet wird.“, allerdings scheint sich das nur darauf zu beziehen, dass der Scan nicht startet, wenn der Computer gerade benutzt wird.

Ein geplanter Scan wird bei ausgeschaltetem PC nie nachgeholt, auch wenn das Häkchen nicht gesetzt ist. Somit ist auch die Voreinstellung (Sonntags um 2:00 Uhr nachts) relativ sinnfrei. Anscheinend hat man vergessen, ein Häkchen einzubauen, mit dem man den Scan auch dann nachholen lassen kann, wenn der Computer zum geplanten Zeitpunkt ausgeschaltet war.

Beheben lässt sich das in der Registry. Unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware\Scan finden sich die Werte DisableCatchupQuickScan und DisableCatchupFullScan. Setzt man diese auf 0, wird der Scan nachgeholt. Allerdings sollte man (vor allem bei „FullScan“) darauf achten, dass man die Prozessorlast während des Scans auf einen niedrigen Wert einstellt, da man sonst recht lange nach dem Einschalten warten muss, bis man arbeiten kann.

Hier nochmal das ganze zum direkten Import; einfach in eine Text-Datei einfügen, als MSE_Scan_nachholen.reg abspeichern und mit Rechtsklick + „Zusammenführen“ in die Registry imporieren.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware\Scan]
"DisableCatchupQuickScan"=dword:00000000
"DisableCatchupFullScan"=dword:00000000

Fehler „0x80070035“ bei Zugriff von Windows 7 auf Samba-Freigabe

24. November 2010 von edgar

Dieser Fehler tritt eventuell auf, wenn man von Windows 7 auf eine Samba-Freigabe eines Linux-Rechners zugreifen möchte.

Im Internet findet man dazu einiges, vor allem Probleme der Samba-Konfiguration. Genaue Details zur korrekten Konfiguration gibt es beispielsweise hier: http://wiki.ubuntuusers.de/samba_server

Wenn ein Zugriff auf Samba trotz der korrekten Einrichtung der Samba-Konfigurationsdatei und der Samba-Benutzer nicht möglich ist, liegt vermutlich ein Rechteproblem vor. Hat der Benutzer, der über Samba auf die Freigabe zugreifen möchte, auch die Leserechte für die Datei? Auf Laufwerken mit Linux-Dateisystem lassen sich z.B. Leserechte für alle über den Befehl
sudo chmod -R o+r [ordnername]
hinzufügen. Mehr zum Thema Rechte unter Linux gibt es hier: http://wiki.ubuntuusers.de/rechte

Problematisch wird das ganze, wenn man auch noch eine Freigabe auf NTFS-Laufwerken haben möchte. Dabei muss man zusätzlich darauf achten, wie die Festplatte eingebunden (gemountet) ist. Hier ein Eintrag aus der Datei „/etc/fstab“ meines Rechners:
UUID=7896C12A96C0E9A8 /mnt/Stuff ntfs rw,auto,user,nls=utf8,umask=007,gid=46 0 0

Wichtig ist hierbei der Eintrag „gid=46“. Er gibt nämlich an, dass das Laufwerk mit der Gruppe 46 (unter Ubuntu: „plugdev“) eingebunden wird. Damit dürfen nur Benutzer auf dieses Laufwerk (und damit auch auf die Freigabe!) zugreifen, die sich in der Gruppe „plugdev“ befinden.

Das Problem wurde also dadurch behoben, den zugreifenden Benutzer nicht nur im Linux-System und unter Samba anzulegen, sondern ihn auch in die Gruppe „plugdev“ aufzunehmen.



css.php