opencv etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
opencv etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

27 Mart 2009 Cuma

Opencv Modülü İle Kamera Görüntüsü Alma

Bu yazımızda python, opencv modülü ve qt ile kamera görüntüsü alıp göstereceğiz, hatta resim de çekeceğiz.


# -*- coding: utf-8 -*-

from PyQt4 import QtGui, QtCore

import Image
import ImageQt
import opencv
from opencv import highgui

# kamera yakalayıcı...
camera = highgui.cvCreateCameraCapture(0)

# kamera işlemimiz sürekli olarak ekrana görüntüyü basıyor...
class camThread(QtCore.QThread):
def run(self):
while True:
# görüntüleri basarken her aralıkda 60ms bekliyoruz, buda 60fps demek...
# eğer sizde görüntü yavaş olursa yani fps yi düşürün...
self.msleep(60)
# görüntüyü alıyoruz...
self.image = highgui.cvQueryFrame(camera)

# resim sinyalini yayıyoruz ve gidecek fonksiyona self.image değişkenini,
# gönderiyoruz...
self.emit(QtCore.SIGNAL("image"), (self.image))

class camoruxWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)

self.resize(650, 450)

self.camThread = camThread()

self.showLabel = QtGui.QLabel(self)
self.showLabel.resize(640, 480)

# camThread den gelen sinyali alıyoruz ve self.showImage ye bağlıyoruz...
self.connect(self.camThread, QtCore.SIGNAL("image"), self.showImage)
self.camThread.start()

self.button = QtGui.QPushButton(self)
self.button.setText(u"Resim çek")
self.connect(self.button, QtCore.SIGNAL("clicked(bool)"), self.cek)

def cek(self):
# flash
self.flash = QtGui.QWidget()
self.flash.setStyleSheet("background-color: rgb(255, 255, 255);")
self.flash.showFullScreen()

# resim çekiliyor...
i = highgui.cvQueryFrame(camera)
opencv.adaptors.Ipl2PIL(i).save("deneme.png")

# flash kapanıyor
self.flash.close()

def showImage(self, image):
# burada: gelen resmi ImageQt ile QLabel in istediği şekile dönüştürüyoruz...
self.image = ImageQt.ImageQt(opencv.adaptors.Ipl2PIL(image).transpose(Image.FLIP_LEFT_RIGHT))
# ve gösteriyoruz...
self.showLabel.setPixmap(QtGui.QPixmap.fromImage(self.image))

app = QtGui.QApplication([])
mw = camoruxWindow()
mw.show()
app.exec_()

Dikkat etmeniz gereken nokta şu:
camThread görüntüyü gösterirken 60ms bekliyor yani 60fps ile görüntü gösteriliyor, sizde eğer görüntü yavaş olursa fps yi düşürmeniz gerekiyor demektir. 30-40 fps arası deneyin…