pythonturkiye-blog
pythonturkiye-blog
PythonTürkiye
117 posts
Don't wanna be here? Send us removal request.
pythonturkiye-blog · 8 years ago
Text
PyQt5 eğitimi ~ Listeler, ComboBox Alanları
New Post has been published on http://www.python.tc/pyqt5-egitimi-listeler-combobox-alanlari/
PyQt5 eğitimi ~ Listeler, ComboBox Alanları
Merhaba arkadaşlar, bugün listeler ve comboBox(htmldeki dropdownmenu veya select menuler) gibi bir yapıları nasıl oluşturacağımızı öğreneceğiz. Şimdi ilk olarak listWidget ile başlayalım.
  ListWidget
İlk olarak listWidgette yapacaklarımızı liste olarak gösterelim.
ListWidget tanımlama
ListWidget’e veri ekleme
İlk önce ufak bir yapı ile listWidgeti penceremize ekleyelim. Eklemek İçin gereken kod QListWidget(), sonra ise birkaç eleman ekleyelim onun için gereken kod ise  liste_adi.addItem(“eklenecek veri”) şeklinde olacaktır.
Şimdi Ufak bir örnek ile gösterelim.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout(self) self.liste = QListWidget() self.liste.addItem("Python") self.liste.addItem("javascript") self.liste.addItem("php") self.liste.addItem("c") self.liste.addItem("c++") self.liste.addItem("c#") self.layout.addWidget(self.liste) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
Ayrıca Çoğul olarakta içerik ekleyebiliriz. addItem yerine ufak bir ‘s’ takısı sayesinde addItems ile ekleyebiliriz.
Şimdi ufak bir örnek gösterelim.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout(self) self.liste = QListWidget() self.liste.addItems(["mehmet","ali","rıza"]) self.layout.addWidget(self.liste) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
Şu an ki bilgilerimizle listWidget’i sadece oluşturmayı bilsek bize yetecektir. Butonlardan sonra bu gibi yapıları dinamikleştirmeyi öğreneceğiz.(asıl keyifli kısımlar orası 🙂 ).
    ComboBox
Şimdi aynı şekilde Combobox ile de örnekler yapalım. Yapı olarak QListWidget ile kardeş gibilerdir .
Şimdi yeni bir combobox oluşturalım.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout(self) self.box = QComboBox(self) self.layout.addWidget(self.box) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
Bu örneği çalıştırdığınız zaman içi boş olan bir comboBox göreceksiniz içerik eklemek için ,
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout(self) self.box = QComboBox(self) self.box.addItem("deneme") #veya self.box.addItems(["deneme1","deneme2","deneme3"]) #bunu kullanabilirsiniz. self.layout.addWidget(self.box) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
Böylece yavaş yavaş içerik eklemeyi öğrendiniz. 8.yazı ile beraber artık dinamik olarak bunları kullanmaya başlayacaksınız.
  iyi günler
0 notes
pythonturkiye-blog · 8 years ago
Text
PyQt5 Etiket ve Yazı alanları - Devamı
New Post has been published on http://www.python.tc/pyqt5-etiket-ve-yazi-alanlari-devami/
PyQt5 Etiket ve Yazı alanları - Devamı
Bugün ikinci bölüm olarak belirlediğim Etiket ve Yazı alanları kısmını yazıyorum.
Bu bölüm ile yavaş yavaş oluşturduğumuz pencerelerin içini doldurmaya başlayacağız.
Şimdi penceremizi oluşturmaya başlayalım.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() app = QApplication(sys.argv) window = Window() window.show() app.exec_()
Geçen bölümde gösterdiğim class yapısı ile penceremizi oluşturduk. Şimdi label(etiket) kullanımını öğrenelim.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #ilk label oluşturma örneğimiz self.etiket = QLabel("deneme",self) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
ikinci örnekte ise kullanımını setText(“text”) methodu yardımıyla yapabilirsiniz.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #basit bir grid oluşturalım self.grid = QVBoxLayout(self) # Etiket oluşturma #örnek 2 self.etiket2 = QLabel(self) self.etiket2.setText("deneme2") #addwidget aracıyla alt alta getirelim app = QApplication(sys.argv) window = Window() window.show() app.exec_()
İkisi arasında hiçbir fark yoktur. Aşağıdaki kod bloğuna dikkat ederseniz sizin için daha iyi olacaktır.
note: ufak bir grid yapısı kullanıldı sebebi yazıların üst üste gelmesinden dolayı.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #basit bir grid oluşturalım self.grid = QVBoxLayout(self) # Etiket oluşturma #örnek 1 self.etiket = QLabel("deneme",self) #örnek 2 self.etiket2 = QLabel(self) self.etiket2.setText("deneme2") #addwidget aracıyla alt alta getirelim self.grid.addWidget(self.etiket) self.grid.addWidget(self.etiket2) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
  setText metoduyla sonradan label isimlerini değiştirebilirsiniz.
self.etiket.setText("deneme3")
  LineEdit
Bu kısımın bir aksiyonu olmadığı için direk kodlarla gösteriyorum. QlineEdit ile rahatçaHtmldeki input benzeri bir alanı oluşturuyoruz.
self.lineEdit = QLineEdit(self)
Eğer derseniz ki şifre korumasını nasıl yaparım diye setEchoMode ile input alanının şifre için ayarlayabilirsiniz.
self.lineEdit.setEchoMode(QLineEdit.Password)
  Şimdi isterseniz ufak bir giriş alanı oluşturalım. uyarı olarak QtDesigner ile yapacağım için sadece label ve lineEdit alanlarına dikkat etmeniz yeterli.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #basit bir grid oluşturalım self.grid = QVBoxLayout(self) #labelları oluşturalım self.label_ad = QLabel("Kullanıcı adı: ",self) self.label_sifre = QLabel("Şifre: ",self) #lineEdit(input) alanlarını oluşturalım self.ad=QLineEdit(self) self.sifre=QLineEdit(self) #şifre alanını ayarlayalım örn:**** self.sifre.setEchoMode(QLineEdit.Password) #ufak bir grid ayarı ile artık düzenli bir görüntü alabiliriz. self.grid.addWidget(self.label_ad) self.grid.addWidget(self.ad) self.grid.addWidget(self.label_sifre) self.grid.addWidget(self.sifre) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
  Ufak ufak artık kendimizi geliştiriyoruz.  Bir sonraki yazımızda  listeler, combobox alanları ‘nı göreceğiz. Bugün buttonlarla ilgili yazıları yazıp artık daha güzel örneklerle ilerleyeceğiz.
İyi günler 🙂
1 note · View note
pythonturkiye-blog · 8 years ago
Text
Etiket ve Yazı alanları
New Post has been published on http://www.python.tc/etiket-ve-yazi-alanlari/
Etiket ve Yazı alanları
Bugün ikinci bölüm olarak belirlediğim Etiket ve Yazı alanları kısmını yazıyorum.
Bu bölüm ile yavaş yavaş oluşturduğumuz pencerelerin içini doldurmaya başlayacağız.
Şimdi penceremizi oluşturmaya başlayalım.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() app = QApplication(sys.argv) window = Window() window.show() app.exec_()
Geçen bölümde gösterdiğim class yapısı ile penceremizi oluşturduk. Şimdi label(etiket) kullanımını öğrenelim.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #ilk label oluşturma örneğimiz self.etiket = QLabel("deneme",self) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
ikinci örnekte ise kullanımını setText(“text”) methodu yardımıyla yapabilirsiniz.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #basit bir grid oluşturalım self.grid = QVBoxLayout(self) # Etiket oluşturma #örnek 2 self.etiket2 = QLabel(self) self.etiket2.setText("deneme2") #addwidget aracıyla alt alta getirelim app = QApplication(sys.argv) window = Window() window.show() app.exec_()
İkisi arasında hiçbir fark yoktur. Aşağıdaki kod bloğuna dikkat ederseniz sizin için daha iyi olacaktır.
note: ufak bir grid yapısı kullanıldı sebebi yazıların üst üste gelmesinden dolayı.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #basit bir grid oluşturalım self.grid = QVBoxLayout(self) # Etiket oluşturma #örnek 1 self.etiket = QLabel("deneme",self) #örnek 2 self.etiket2 = QLabel(self) self.etiket2.setText("deneme2") #addwidget aracıyla alt alta getirelim self.grid.addWidget(self.etiket) self.grid.addWidget(self.etiket2) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
  setText metoduyla sonradan label isimlerini değiştirebilirsiniz.
self.etiket.setText("deneme3")
LineEdit Bu kısımın bir aksiyonu olmadığı için direk kodlarla gösteriyorum. QlineEdit ile rahatçaHtmldeki input benzeri bir alanı oluşturuyoruz.
self.lineEdit = QLineEdit(self)
Eğer derseniz ki şifre korumasını nasıl yaparım diye setEchoMode ile input alanının şifre için ayarlayabilirsiniz.
self.lineEdit.setEchoMode(QLineEdit.Password)
  Şimdi isterseniz ufak bir giriş alanı oluşturalım. uyarı olarak QtDesigner ile yapacağım için sadece label ve lineEdit alanlarına dikkat etmeniz yeterli.
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #basit bir grid oluşturalım self.grid = QVBoxLayout(self) #labelları oluşturalım self.label_ad = QLabel("Kullanıcı adı: ",self) self.label_sifre = QLabel("Şifre: ",self) #lineEdit(input) alanlarını oluşturalım self.ad=QLineEdit(self) self.sifre=QLineEdit(self) #şifre alanını ayarlayalım örn:**** self.sifre.setEchoMode(QLineEdit.Password) #ufak bir grid ayarı ile artık düzenli bir görüntü alabiliriz. self.grid.addWidget(self.label_ad) self.grid.addWidget(self.ad) self.grid.addWidget(self.label_sifre) self.grid.addWidget(self.sifre) app = QApplication(sys.argv) window = Window() window.show() app.exec_()
  Ufak ufak artık kendimizi geliştiriyoruz.  Bir sonraki yazımızda  listeler, combobox alanları ‘nı göreceğiz. Bugün buttonlarla ilgili yazıları yazıp artık daha güzel örneklerle ilerleyeceğiz.
İyi günler 🙂
0 notes
pythonturkiye-blog · 8 years ago
Text
PyQt5 eğitimi ~ Pencereler
New Post has been published on http://www.python.tc/pyqt5-egitimi-pencereler/
PyQt5 eğitimi ~ Pencereler
PyQt5 ~ Pencereler ile arayüze giriş
Yazıya başlamadan önce PyQt5 ile ilgili güzel ve ne yazık ki eksik kalmış bir türkçe kaynak linkini sizinle paylaşmak istiyorum.
 PyQt5 notları
Ayrıca bu yazı dizisini 16 bölüm olarak hedefledim. Yazı dizisi içinde elemanların tüm özelliklerini ve kullanım türlerini beraber öğreneceğiz. Aslında bu yazıya başlamamın bir sebebi çok iyi bilmesemde bir hocamın: “öğreterek öğrenmek daha kalıcı olur” nasihatinden dolayıdır.
Pencereler ve özellikleri(boyut,ismi vs…)
Etiket ve yazı alanları
listeler,combobox alanları
Buttonlar (pushButton, checkbox,radioButton)
Grid yapıları
Menu ve toolbarlar
Mesaj kutuları
7 bölüm bittikten sonra ise dinamik olarak bu öğeler ile ilgili orta düzey örnekler yapmayı amaçlıyorum. Şuan temel 7 alan size de önerdiğim kaynakla belirledim.Bu 16 bölümlük yazı dizisi bittikten sonra ise platformlara göre örnek olarak (linux, mac, windows) masaüstü programlarını geliştireceğiz.Aklımda olan programlar galeri, videoplayer, stickynote gibi tabi sizin isteklerinize göre değişebilir.
  Artık yavaş yavaş PyQt5 ile pencere oluşturmaya başlayalım 🙂
İlk önce PyQt5’i programımıza ekleyelim.
from PyQt5 import QtWidgets import sys
Bu eklediğimiz modüller oluşturacağımız pencere yapımındaki bazı yapıları eklememizi sağlıyor aksi takdirde hata alıp kafayı yiyebilirsiniz 🙂
Şimdi temel olarak penceremizi oluşturmamız için gereken kodları ekleyip ilk denememizi yapalım.
app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.show() app.exec_()
Bu kısım ile birlikte ilk pencereniz ekrana gelecektir.
Derseniz ki boyutu, başlığı ve uygulama simgesi nasıl ayarlanıyor diye,
window.resize(100,100) # boyut ayarlama window.setWindowTitle("hello world") # Pencere başlığı için window.setWindowIconText("icon.png") # İcon resmi eklemek için
window.setFixedWidth(200) #sabit genişlik ayarı window.setFixedHeight(200) #sabit yükseklik ayarı ## veya window.setFixedSize(300,400) # sadece bu fonksiyon ile width ve height değerlerini ayarlayabilirsiniz
o merak ettiğniz kısımlarda böyle hallediliyor.
  Not: set*** ile başlayan parçacıklar ile ilk defa tanımlama yapılır. Eğer değerini almak isterseniz set kısmı hariç parçacıkla değeri alabilirsiniz.
örnek: x =  WindowTitle() gibi
  Peki bu iş class(sınıf) yapılarıyla nasıl yapılıyor derseniz,
from PyQt5.QtWidgets import * import sys class Window(QWidget): def __init__(self): super().__init__() #pencere ayarlarını yapalım self.resize(400,500) #self.setFixedSize(1000,700) self.setWindowTitle("class") # varsa => self.setWindowIcon("x.png") app = QApplication(sys.argv) window = Window() window.show() app.exec_()
bu şekilde yapabilirsiniz.
  Pencere konumu için ise;
self.move(300, 300)
bu methodu kullanabilirsiniz. x=300,y=300 
Şimdi Qwidget dışındaki pencere araçlarını yazıyorum onlarıda deneyebilirsiniz.
QDialog
QMainWindow
Kullandığımız =>QWidget
Bu pencere sınıflarının farklı amaçları var. Ve şimdi bunlara değinsek fazla akılda kalıcı olacağını düşünmüyorum. Projeleri yapacağımız zaman bunlar önem kazacak. O zaman detaylı olarak anlatacağım.(tabi bende yeterince öğrenebilirsem 🙂 )
  Pencere konusunu burada bitiriyorum, İnşallah sizin için iyi bir anlatım olmuştur 🙂
0 notes
pythonturkiye-blog · 8 years ago
Text
Python ile OpenCV Günlükleri-4 : Trackbar oluşturma ve resim üzerinde serbest çizim yapmak
New Post has been published on http://www.python.tc/python-ile-opencv-gunlukleri-4-trackbar-olusturma-ve-resim-uzerinde-serbest-cizim-yapmak/
Python ile OpenCV Günlükleri-4 : Trackbar oluşturma ve resim üzerinde serbest çizim yapmak
İyi Günler Python Türkiye ailesi. Yazı dizimize devam ediyoruz. Bugün örnek senaryolar ile BGR Trackbar oluşturup, istediğimiz renkte, resim üzerinde serbest çizim yapacağız
Öncelikle önceki yazılarımı takip eden arkadaşlar farketmişlerdir. Opencv BGR modunu kullanır. Kodlarımızda hep standart renk kodu(255, 0, 0 veya (0,255,0)) belirterek çizimler yapmıştık. Şimdi bu sistemi biraz geliştirerek istediğimiz renkte, renk kodlarını girmeden çizimler yapalım .
Senaryo: Renkler için Trackbar tanımlayarak, resim üzerinde serbest çizim yapmak .
Gerekli modülleri import edelim
import cv2 import numpy as np
Şimdi palet penceresi oluşturalım. Bunun için numpy modülünün zeroes özelliğinden yararlanıp, belirttiğimiz boyutta pencere oluşturduk
palet_alani = np.zeros((300, 300, 3), np.uint8)
Oluşturduğumuz pencereye isim verelim
cv2.namedWindow('palet')
Şimdi üzerinde çizim gerçekleştireceğimiz resmi okuyalım .
resim = cv2.imread('dybala.jpg', 1)
Penceremize isim verelim
cv2.namedWindow('dybala')
Şimdi gelelim çizim işlemlerine. Çizim işlemleri serbest olacak. Kullanıcı mouse sol tusuna basıp, mouse sürükleyip bıraktığı anda, ilk bastığı yer ile bıraktığı yer arasında çizgi çizeceğiz . Bunun için callback fonksiyonunu yazalım . Callback donksiyonu içinde çizim yapacağımız fonksiyonumuz olan sekil_ciz fonksiyonunu çağırdık. Bu fonksiyonun içeriğine değineceğiz
cv2.setMouseCallback('dybala', sekil_ciz)
Şimdi renklerimizi sececeğimiz, renk paleti olan trackbar oluşturalım.
cv2.createTrackbar('K', 'palet', 0, 255, palet_callback) cv2.createTrackbar('Y', 'palet', 0, 255, palet_callback) cv2.createTrackbar('M', 'palet', 0, 255, palet_callback)
Yukarıdaki kodlara değinelim.  createTrackbar(), fonksiyonu trackbar oluşturmamızı sağlayan fonksiyondur. 5 parametre alır. sırasıyla trackbarı’ın ismi, Trackbar’ın pencere ismi , trackbarın başlangıç değeri, bitiş değeri, ve callback yapılacak fonksiyonun ismi . Bu fonksiyon  trackbar’ın her pozisyon değişikliğinde çalıştırılan fonksiyondur.
  Trackbarımız hazır. Şimdi sonsuz döngü oluşturalım ve kullanıcı ESC tuşuna basmadığı sürece resimlerimiz show olsun ve çizimlerimizi yapalım
while True: cv2.imshow('palet', palet_alani) cv2.imshow('dybala', resim) if cv2.waitKey(1) & 0xFF == 27: break kirmizi_position = cv2.getTrackbarPos('K', 'palet') yesil_position = cv2.getTrackbarPos('Y', 'palet') mavi_position = cv2.getTrackbarPos('M', 'palet') palet_alani[:] = [mavi_position, yesil_position, kirmizi_position]
Yukarıdaki kodumuzda position kısımlarına değinelim. Her renk için (Mavi, yeşil, Kırmızı)  trackbarın pozisyonunu getTrackbarPos () fonksiyonu ile aldık . 2 parametre alır. Trackbar’ın ismi ve pencere ismi
  getTrackbarPos () fonksiyonu ile her renk için , anlık pozisyon bilgilerini aldık. Şimdi bu pozisyon bilgilerini çizim yapacağımız SetMouseCallBack içerisinde çağırdığımız event fonksiyonumuz içinde kullanalım
def sekil_ciz(event, x, y, flags, param): global ix, iy if event == cv2.EVENT_LBUTTONDOWN: ix, iy = x, y # sol tuşa basıldığı yerin koordinatlarını al elif event == cv2.EVENT_LBUTTONUP: cv2.line(resim, (ix, iy), (x, y), (mavi_position, yesil_position, kirmizi_position), 3)
Yukarıdaki kod, sol tuşa basılan yer ile mouse’dan elimizi çektiğimiz nokta arasında çizgi çizer. Çizginin renk kodlarını trackbar pozisyon değerlerini atıyoruz. Mesela Kırmızı rengin trackbar pozisyonu 170, mavi 140, yeşil 50  ise , renk kodu olarak BGR (140, 50, 170) olacaktır.
ve palet için callback fonksiyonumuz olan palet_callback kodlarını yazalım .Parametre olarak trackbarı pozisyonunu alır. Biz hiçbişey yaptırmadık pass ettik.
def palet_callback(x): pass
  Senaryo Kodları :
import cv2 import numpy as np def palet_callback(x): pass def sekil_ciz(event, x, y, flags, param): global ix, iy if event == cv2.EVENT_LBUTTONDOWN: ix, iy = x, y elif event == cv2.EVENT_LBUTTONUP: cv2.line(resim, (ix, iy), (x, y), (mavi_position, yesil_position, kirmizi_position), 3) palet_alani = np.zeros((300, 300, 3), np.uint8) cv2.namedWindow('palet') # trackbar oluşturuyoruz resim = cv2.imread('dybala.jpg', 1) cv2.namedWindow('dybala') cv2.setMouseCallback('dybala', sekil_ciz) cv2.createTrackbar('K', 'palet', 0, 255, palet_callback) cv2.createTrackbar('Y', 'palet', 0, 255, palet_callback) cv2.createTrackbar('M', 'palet', 0, 255, palet_callback) while True: cv2.imshow('palet', palet_alani) cv2.imshow('dybala', resim) if cv2.waitKey(1) & 0xFF == 27: break kirmizi_position = cv2.getTrackbarPos('K', 'palet') yesil_position = cv2.getTrackbarPos('Y', 'palet') mavi_position = cv2.getTrackbarPos('M', 'palet') palet_alani[:] = [mavi_position, yesil_position, kirmizi_position] cv2.destroyAllWindows()
  sdf
0 notes
pythonturkiye-blog · 8 years ago
Text
NumPy Yükleme ? ( NumPy Eğitim Serisi )
New Post has been published on http://www.python.tc/numpy-yukleme-numpy-egitim-serisi/
NumPy Yükleme ? ( NumPy Eğitim Serisi )
  Merhaba arkadaşlar,
Bugün sizelere numpy yı bilgisayarınıza yüklemeyi gösterecem. Benim önerim size anacondayı (yüklemek için videolu anlatım) indiremenizi öneririm  ve oradan da spyder açarak çok rahat kullanabilirsiniz (videolu anaconda Spyder tanıtımı )orada bir çok kütüphane yülü şekilde geliyor hiç uğraşmazsınız .
Eğer anaconda kullanmıyorsanız Cmd yi açarak şu komutu girin yüklemeyi yapacak.
pip install numpy
İyi çalışmalar
http://www.python.tc/numpy-yukleme-numpy-egitim-serisi/
0 notes
pythonturkiye-blog · 8 years ago
Text
NumPy ? ( NumPy Eğitim Serisi Giriş )
New Post has been published on http://www.python.tc/numpy-numpy-egitim-serisi-giris/
NumPy ? ( NumPy Eğitim Serisi Giriş )
Merhaba Arkadaşlar,
Bugün sizlerle numpy tanıyacaz.
NumPy nedir?
NumPy, Python’da bilimsel hesaplamanın temel paketi. Çok boyutlu bir dizi nesnesi, çeşitli türetilmiş nesneler (maskelenmiş diziler ve matrisler gibi) ve dizilerdeki hızlı işlemler için matematiksel, mantıksal, şekil işleme, sıralama, seçme, g / Ç içeren bir dizi yordam sunan bir Python kitaplığıdır , Ayrık Fourier dönüşümü, temel doğrusal cebir, temel istatistik işlemler, rassal simülasyon ve çok daha fazlası.
NumPy paketinin özünde, ndarray nesnesi var. Bu, homojen veri türlerinin n-boyutlu dizilerini kapsar, birçok işlem performans için derlenmiş kodda gerçekleştirilir. NumPy dizileri ile standart Python dizileri arasında birkaç önemli farklılık vardır:
Python listelerinden farklı olarak (dinamik olarak büyüyebilen) NumPy dizileri oluşturulurken sabit bir boyuta sahiptir. Bir ndarray boyutunu değiştirdiğinizde yeni bir dizi oluşturulur ve orijinali silinir. Bir NumPy dizideki öğelerin hepsinin aynı veri türüne sahip olması gerekir ve dolayısıyla bellekte aynı boyutta olacaktır. İstisna: biri, (Python, NumPy dahil) nesnelerin dizilerine sahip olabilir, böylece farklı boyutlu öğelerin dizilerine izin verilir. NumPy dizileri, çok sayıda veri üzerinde gelişmiş matematiksel işlemleri ve diğer işlemleri kolaylaştırır. Tipik olarak, bu tür operasyonlar, Python’un dahili dizilerini kullanarak mümkün olana oranla daha verimli ve daha az kodla yürütülür. Artan bol miktarda bilimsel ve matematiksel Python tabanlı paketler NumPy dizilerini kullanıyor; Bunlar tipik olarak Python dizisi girdisini desteklemekle birlikte, bu tür girdileri işlenmeden önce NumPy dizilerine dönüştürürler ve sık sık NumPy dizilerini çıkarırlar. Başka bir deyişle, günümüz bilimsel / matematiksel Python tabanlı yazılımların çoğunu (belki de en fazla olanı) etkin bir şekilde kullanmak için, sadece Python’un yerleşik sıralı türlerini nasıl kullanacağını bilmek yetersizdir; ayrıca bir NumPy dizisinin nasıl kullanılacağını bilmek gerekir. Sıralama büyüklüğü ve hızıyla ilgili hususlar, bilimsel hesaplamada özellikle önemlidir. Basit bir örnek olarak, her elemanın 1-D sıralamasında, aynı uzunluğa sahip başka bir dizideki ilgili elemanla çarpılması durumunda düşünün. Veriler iki python listesinde (a ve b) depolanırsa, her öğenin üzerinde yinelenebiliriz:
c = [] for i in range(len(a)): c.append(a[i]*b[i])
Bu doğru cevabı üretir, ancak a ve b’nin her biri milyonlarca sayı içeriyorsa, Python’da döngüsüzlüğün verimsizliği için fiyat ödeyeceğiz. Aynı görev C’de daha hızlı bir şekilde yazabiliriz (açıklık için değişken bildirimleri ve başlatmaları ihmal ediyoruz, bellek ayırma vb.)
for (i = 0; i < rows; i++): c[i] = a[i]*b[i];
Bu, Python kodunu yorumlamak ve Python nesnelerini değiştirmekle ilgili tüm yükü azaltır, ancak Python’da kodlamadan elde edilen yararlar pahasına. Ayrıca, gereken kodlama işi verilerimizin boyutsallığı ile birlikte artmaktadır. Örneğin, 2 boyutlu bir dizi söz konusu olduğunda, C kodu (daha önce olduğu gibi kısaltılmıştır),
for (i = 0; i < rows; i++): for (j = 0; j < columns; j++): c[i][j] = a[i][j]*b[i][j];
NumPy, bize her iki dünyanın en iyi özelliklerini sunar: bir öğe bazında işlemler, bir ndarray işlendiğinde “varsayılan mod” olur, ancak öğe bazlı işlem hızlı bir şekilde önceden derlenmiş C kodu tarafından yürütülür. NumPy’de
C = a * b
Daha önceki örneklerin C hızında yaptıklarını yapar, fakat Python tabanlı bir şeyden beklediğimiz kod basitliği ile yapar. Nitekim, NumPy deyimi daha basit! Bu son örnek, gücünün temelini oluşturan NumPy’nin özelliklerinden ikisini göstermektedir: vektörizasyon ve yayın.
Vektörizasyon, kodda açık bir döngü, dizin oluşturma vb. Bulunmadığını açıklar – bunlar, elbette, optimize edilmiş önceden derlenmiş C kodundaki “perde arkasında” gerçekleşiyor. Vektörize edilmiş kodun birçok avantajı vardır: Bunların arasında:
Vektörize edilmiş kod daha özlü ve okunması daha kolay Daha az kod satırı genellikle daha az hata anlamına gelir Kod, standart matematiksel notasyona daha yakından benzemektedir (matematiksel yapıları doğru bir şekilde kodlamak daha kolay hale gelmektedir) Vektörizasyon “Pythonic” koduyla sonuçlanır. Vektörizasyon olmadan, kodlarımız verimsiz ve döngüleri okumak zor olacak şekilde çevrilebilirdi. Yayıncılık, operasyonların örtülü element-by-element davranışını tanımlamak için kullanılan terimdir; Genelde NumPy’de yalnızca aritmetik işlemler değil, mantıksal, bit yönlü, işlevsel vb. Tüm işlemler, bu örtülü element-by-element modasıyla hareket ederler yani yayın yapar. Üstelik, yukarıdaki örnekte, a ve b, aynı dizinin çok boyutlu dizileri veya küçük bir dizinin “büyütülebilir” olması koşuluyla, bir skalarla bir dizi veya farklı şekillerde iki dizi olabilir. Elde edilen yayın net bir şekilde olacak şekilde. Yayıncılık ile ilgili ayrıntılı “kurallar” için bkz. Numpy.doc. Geniş döküm.
NumPy, bir kez daha ndarray ile başlayan, nesne yönelimli bir yaklaşımını tam olarak destekler. Örneğin, ndarray birçok yöntem ve özniteliğe sahip bir sınıftır. Yöntemlerinin birçoğu işlevleri en dışta bulunan NumPy ad alanına yansıtarak, programcıya, hangi paradigmasında hangisini tercih ettiğini ve / veya eldeki göreve en uygun olanı kodlamada tam bir özgürlük kazandırır.
İyi çalışmalar,
0 notes
pythonturkiye-blog · 8 years ago
Text
PyQt5 eğitimi
New Post has been published on http://www.python.tc/pyqt5-egitimi/
PyQt5 eğitimi
İyi günler arkadaşlar, bir yazı dizisi olarak benimde yeni öğrendiğim PyQt5 ile arayüz uygulama ile ilgili projeler ve eğitim derslerini vereceğim. Bu konuda gerçekten çok eksik var ve bu eksiği bizim gibi meraklı olan arkadaşların tembelliği yüzünden kapanmıyor.
Sizin için ufak 3 tane örnek paylaşacağım.
1.örnek combobox’a lineEdit ile veri ekleme
# -*- coding: utf-8 -*- from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(242, 302) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(20, 130, 190, 45)) self.pushButton.setObjectName("pushButton") self.pushButton_3 = QtWidgets.QPushButton(Form) self.pushButton_3.setGeometry(QtCore.QRect(20, 180, 191, 61)) self.pushButton_3.setObjectName("pushButton_3") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(20, 10, 191, 51)) self.label.setObjectName("label") self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(10, 80, 221, 33)) self.lineEdit.setObjectName("lineEdit") self.comboBox = QtWidgets.QComboBox(Form) self.comboBox.addItems(["Ahmet", "Mehmet", "Banu", "Konuray"]) self.comboBox.setGeometry(QtCore.QRect(10, 50, 221, 25)) self.comboBox.setObjectName("comboBox") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "ekle")) self.pushButton.clicked.connect(self.combo_add) self.pushButton_3.setText(_translate("Form", "kapat")) self.pushButton_3.clicked.connect(quit) self.label.setText(_translate("Form", "veriler ekleniyor")) def combo_add(self): if len(self.lineEdit.text()) >=3: self.comboBox.addItem(self.lineEdit.text()) self.label.setText(self.lineEdit.text()+" kişisi eklendi") else: self.label.setText("Kişi eklenemedi. En az 3 harfle oluşmalıdır") if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())
  2.örnek listWidget’e lineEdit ile veri ekleme
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'x.ui' # # Created by: PyQt5 UI code generator 5.5.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(535, 302) self.listWidget = QtWidgets.QListWidget(Form) self.listWidget.setGeometry(QtCore.QRect(50, 60, 256, 192)) self.listWidget.setObjectName("listWidget") list =self.listWidget list.addItem("Python") list.addItem("Php") list.addItem("javascript") list.addItem("c++") list.addItem("c") list.addItem("c#") self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(320, 130, 90, 33)) self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(420, 130, 90, 33)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_3 = QtWidgets.QPushButton(Form) self.pushButton_3.setGeometry(QtCore.QRect(329, 190, 181, 61)) self.pushButton_3.setObjectName("pushButton_3") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(50, 10, 431, 31)) self.label.setObjectName("label") self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(310, 70, 221, 33)) self.lineEdit.setObjectName("lineEdit") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "ekle")) self.pushButton.clicked.connect(self.list_add) self.pushButton_2.setText(_translate("Form", "sil")) self.pushButton_3.setText(_translate("Form", "kapat")) self.pushButton_3.clicked.connect(quit) self.label.setText(_translate("Form", "veriler ekleniyor")) def list_add(self): self.label.setText(self.lineEdit.text()+" eklendi") self.listWidget.addItem(self.lineEdit.text()) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())
  ve 3. örnek ise ufak bir önizleme programı
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'x.ui' # # Created by: PyQt5 UI code generator 5.5.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets import sys class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(200, 250, 90, 33)) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.onizle) self.pushButton_2 = QtWidgets.QPushButton(Form) self.pushButton_2.setGeometry(QtCore.QRect(90, 250, 90, 33)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_2.clicked.connect(quit) self.lineEdit = QtWidgets.QLineEdit(Form) self.lineEdit.setGeometry(QtCore.QRect(30, 50, 341, 101)) self.lineEdit.setObjectName("lineEdit") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(40, 170, 321, 51)) self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.pushButton.setText(_translate("Form", "önizleme")) self.label.setText(_translate("Form", "üsteki yazı gelecek")) self.pushButton_2.setText(_translate("Form", "kapat")) def onizle(self): self.label.setText(self.lineEdit.text()) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) Form = QtWidgets.QWidget() ui = Ui_Form() ui.setupUi(Form) Form.show() sys.exit(app.exec_())
  evet program kodları burada dediğim gibi bende yeni öğreniyorum. hem size yeni bir kaynak oluşturmak hemde kendimi anlatarak geliştirmek için bu yükün altına kendimi sokuyorum.İleri yazılarımda adım adım elemanların özelliklerini ve nasıl kullanıldığını anlatıp ilgili program kodlarını hem buradan hemde github üzerinden kaybolmaması için sizinle paylaşacağım.
Belki kendimi yeterli bir seviyede görürsem sizin için  eğitim videolarıda çekebilirim.
0 notes
pythonturkiye-blog · 8 years ago
Text
Python ile OpenCV Günlükleri-3 / Mouse ile Resim üzerinde Şekil Çizme - Mouse Event Handler
New Post has been published on http://www.python.tc/python-ile-opencv-gunlukleri-3-mouse-ile-resim-uzerinde-sekil-cizme-mouse-event-handler/
Python ile OpenCV Günlükleri-3 / Mouse ile Resim üzerinde Şekil Çizme - Mouse Event Handler
iyi günler python türkiye ailesi Yazı dizimize kaldığımız yerden devam ediyoruz. En son yazımızda Opencv ile resim dosyası okuma ve yazma işlemlerini anlatmıştım
Aslında yazı dizilerime sırasıyla resim işleme, video işleme , mouse Event ile şekil çizim vs. şeklinde devam edecektim Bugün değişiklik yapıp Mouse Event işlemlerini öne aldım .Bu yazımda Mouse Eventlarını yakalayıp, yapılan event’a göre resim üzerine şekil çizme konusuna değineceğim
  setMouseCallback() fonksiyonu
Tüm mouse eventlarını handle edeceğimiz, her event’a mouse’ın x, y koordinat bilgilerini döndüren fonksiyondur. Mouse event; sol click, sağ click, sol double click, sağ double click, mouse up vb. değişkenlik göstermektedir
Senaryo 1: Bigisayarımızdaki bir resmi show edip, mouse sol tuş double-click yaptığımız yerde(x,y ) çember çizen bir uygulama
öncelikle resim dosyasını okuyalım :
resim = cv2.imread('dybala.jpg', 1)
Pencere oluşturalım
cv2.namedWindow('resim')
şimdi ise mouse event yakalayacağımız fonksiyonu yazalım .
cv2.setMouseCallback('resim', daire_ciz) # Pencere adı ve event olduğunda çağıracağımız fonksiyonun adını yazıyoruzsd
Event olduğunda Çağıracağımız fonksiyon
def daire_ciz(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDBLCLK: cv2.circle(resim, (x, y), 50, (255, 0, 0), 1)
Mouse sol tuşu double-click yapıldığında  tıklanılan yere (x,y) 50 yarıçaplı çember çizer . Son parametre olan 1 çizgi kalınlığıdır. -1 değeri verirseniz daire çizer
şimdi bir döngü oluşturalım  ve resmimizi show edelim. Kullanıcı ESC tuşuna basana kadar döngü sürsün.
while True: cv2.imshow('resim', resim) if cv2.waitKey(10) & 0xFF == 27: break cv2.destroyAllWindows()
Senaryo 2:  Bilgisayarımızdaki bir resmi show edip, kullanıcı sol tuş double-click yaptığında çember, sağ tuş double click yaptığında dörtgen çizelim
resmimizi okuma, winname ve event handler fonksiyonu
resim = cv2.imread('dybala.jpg', 1) cv2.namedWindow('resim') cv2.setMouseCallback('resim', daire_ciz)
Mouse event’ı olduğunda çağrılacak fonksiyonu yazalım
def daire_ciz(event, x, y, flags, param): global onceki_x, onceki_y if event == cv2.EVENT_LBUTTONDBLCLK: cv2.circle(resim, (x, y), 50, (255, 0, 0), 1) onceki_x, onceki_y = x, y elif event == cv2.EVENT_RBUTTONDBLCLK: cv2.rectangle(resim, (onceki_x, onceki_y), (x, y), (0, 255, 0), 1)
Yukarıdaki kodlarda değinmemiz gereken önemli husus var
Bildiğiniz üzere Opencv de çember çizerken sadece çizime başlanılacak noktanın (x,y) koordinat bilgilerini belirtmek kafi idi. Ama durum dörtgen çizerken değişiyor. Dörtgen çizerken rectangle() fonksyonu koordinat olarak sol üst köşenin koordinatını ve sağ alt köşenin koordinatını belirtmemizi bekler
Ben de random değerlerden kaçarak, global x,y değişkeni tanımladım. Bu değişkenlere en son çizilen çemberin x,y bilgilerini atadım. Böylece eğer kullanıcı sağ tuş double click yaparsa, sol üst koordinatı önceki çemberin koordinatı, sağ alt koordinatı ise o anda sağ tuş double click yaptığımız yerin koordinatı olan  dörtgen çizecek
  while True: cv2.imshow('resim', resim) if cv2.waitKey(10) & 0xFF == 27: break cv2.destroyAllWindows()
    Kaynak Kodu : https://github.com/farcompen/Opencv-drawing-with-mouse/blob/master/Mouse_Double_click.py
Bol pythonlu günler
0 notes
pythonturkiye-blog · 8 years ago
Text
Python ile OpenCV Günlükleri -2 / Resim Okuma, Kaydetme (RGB,GrayScale)
New Post has been published on http://www.python.tc/python-ile-opencv-gunlukleri-2-resim-okuma-kaydetme-rgbgrayscale/
Python ile OpenCV Günlükleri -2 / Resim Okuma, Kaydetme (RGB,GrayScale)
  İyi günler Python Türkiye ailesi. Bir önceki yazımızda Opencv hakkında bilgi verip, gnu/linux’a Opencv kurulumu hakkında döküman paylaşmıştık.
http://www.python.tc/python-ile-opencv-gunlukleri/
Şimdi opencv 3.0.0 kurulu cihazımızda python ile Opencv uygulamalarına giriş yapacağız
(Opencv’yi kuruktan sonra Opencv bileşenlerinden cv2 modülünü uygulamamıza import etmemiz gerekmektedir.)
Şimdilik ilk uygulamamız kafa karışıklığı oluşturmaması amacıyla bir resmi okuyup, pencere de görüntülemek ve kaydetmek olacak.
Öncelikle kullanacağımız fonksiyonlara göz atalım
İmage Okuma
imread() fonksiyonu, image nesnesi yani resmi okumak için kullandığımız fonksiyondur.
Test amaçlı kullandığımız resim ya  çalıştığımız dizinde olmalı ya da full pathı uygulamamızda belirtmeliyiz
imread() fonksiyonu 2 parametre alır. İlk parametremiz test amaçlı kullanacağımız resmin yolu ve adı , 2. parametremiz ise görüntüleme modumuz
örnek: 1* cv2.imread(‘testresim.jpg’, 0) > testresim dosyasını 0 yani grayscale modda açacaktır cv2.imread(‘testresim.jpg’, cv2.IMREAD_GRAYSCALE) > yukarıdaki örnekle (1*) aynı sonucu verecektir.
Örnek 2* cv2.imread(‘testresim.jpg’, 1) > dosya renkli görüntülenecek cv2.imread(‘testresim.jpg’, cv2.IMREAD_COLOR) > aynı çıktıyı verecektir (2*)
Resmi Görüntüleme
imshow() fonksiyonu ile resmin görüntüleme işlemini gerçekleştiriyoruz .
Bu fonksiyon 2 parametre alır . ilk parametre resmin görüntülendiği pencerenin adı, 2. parametre ise test resmimizin full path’i. Şimdi açıklamalarımız pekiştirmek için örnek uygulama geliştirelim
Senaryo: Kullanıcı çalıştığı dizinde yer alan , renkli test resim dosyasını açıp, display edecektir. Kullanıcı klavyeden ESC tuşuna bastığında pencere kapanıp, uygulama sonlanacak;   klavyeden s harfine bastığında ise  dosyayı yeni isimle grayscale modda aynı dizine kaydedilip uygulama sonlanacaktır.
Başlayalım
import cv2 res=cv2.imread("del.jpg", 0) cv2.imshow("resim", res) k=cv2.waitKey(0) &0xFF if k==27: cv2.destroyAllWindows() elif k==ord('s'): cv2.imwrite("del_gray.jpg", res) cv2.destroyAllWindows() print("yeni dosya kaydedildi")
Kodlarımızı açıklarsak,
import cv2                                   >>Modülümüzü import ettik
res=cv2.imread(“del.jpg”, 0)
cv2.imshow(“resim”, res)          >> resmi okuyup display ettik
k=cv2.waitKey(0)                     >> bu fonksyion klavyeden aktivite bekleyen fonksiyondur . Eğer waitkey(time) belirtilen (milisaniye)de klavyede tuşa basılırsa  uygulama devam edecektir. Eğer süre geçerse, klavyede bir tuşa basıldığında program sonlanacaktır.Aynı zamanda klavyede hangi tuşa basıldığını tespit amaçlı da kullanılır. 64 bit cihazlarda klavye (key stroke ) işlemleri için &0xFF parametresini eklemeniz gerekecektir.
if k==27:
    cv2.destroyAllWindows()  > klavyeden ESC’ye (Ascii değeri 27 )basıldıysa  oluşturduğumuz tüm pencereleri  sonlandırıyoruz 
elif k==ord(‘s’): >> eğer s harfine basılmış ise ; 
cv2.imwrite(“del_gray.jpg”, res) >> resmi dosyasını çalıştığımız dizine yazıyoruz. 
cv2.destroyAllWindows() >> çalıştığımız tüm pencereleri sonlandırdık
print(“yeni dosya kaydedildi”)
Okunan Dosya:
Kaydettiğimiz dosya :
  kaynak kodlar : https://github.com/farcompen/Python-Opencv-image-read-write/blob/master/opencv.py
Bol Pythonlu Günler
0 notes
pythonturkiye-blog · 8 years ago
Text
Python ile OpenCV Günlükleri -2 / Resim Okuma, Kaydetme (RGB,GrayScale)
New Post has been published on http://www.python.tc/python-ile-opencv-gunlukleri-2-resim-okuma-kaydetme-rgbgrayscale/
Python ile OpenCV Günlükleri -2 / Resim Okuma, Kaydetme (RGB,GrayScale)
  İyi günler Python Türkiye ailesi. Bir önceki yazımızda Opencv hakkında bilgi verip, gnu/linux’a Opencv kurulumu hakkında döküman paylaşmıştık.
http://www.python.tc/python-ile-opencv-gunlukleri/
Şimdi opencv 3.0.0 kurulu cihazımızda python ile Opencv uygulamalarına giriş yapacağız
(Opencv’yi kuruktan sonra Opencv bileşenlerinden cv2 modülünü uygulamamıza import etmemiz gerekmektedir.)
Şimdilik ilk uygulamamız kafa karışıklığı oluşturmaması amacıyla bir resmi okuyup, pencere de görüntülemek ve kaydetmek olacak.
Öncelikle kullanacağımız fonksiyonlara göz atalım
İmage Okuma
imread() fonksiyonu, image nesnesi yani resmi okumak için kullandığımız fonksiyondur.
Test amaçlı kullandığımız resim ya  çalıştığımız dizinde olmalı ya da full pathı uygulamamızda belirtmeliyiz
imread() fonksiyonu 2 parametre alır. İlk parametremiz test amaçlı kullanacağımız resmin yolu ve adı , 2. parametremiz ise görüntüleme modumuz
örnek: 1* cv2.imread(‘testresim.jpg’, 0) > testresim dosyasını 0 yani grayscale modda açacaktır cv2.imread(‘testresim.jpg’, cv2.IMREAD_GRAYSCALE) > yukarıdaki örnekle (1*) aynı sonucu verecektir.
Örnek 2* cv2.imread(‘testresim.jpg’, 1) > dosya renkli görüntülenecek cv2.imread(‘testresim.jpg’, cv2.IMREAD_COLOR) > aynı çıktıyı verecektir (2*)
Resmi Görüntüleme
imshow() fonksiyonu ile resmin görüntüleme işlemini gerçekleştiriyoruz .
Bu fonksiyon 2 parametre alır . ilk parametre resmin görüntülendiği pencerenin adı, 2. parametre ise test resmimizin full path’i. Şimdi açıklamalarımız pekiştirmek için örnek uygulama geliştirelim
Senaryo: Kullanıcı çalıştığı dizinde yer alan , renkli test resim dosyasını açıp, display edecektir. Kullanıcı klavyeden ESC tuşuna bastığında pencere kapanıp, uygulama sonlanacak;   klavyeden s harfine bastığında ise  dosyayı yeni isimle grayscale modda aynı dizine kaydedilip uygulama sonlanacaktır.
Başlayalım
import cv2 res=cv2.imread("del.jpg", 0) cv2.imshow("resim", res) k=cv2.waitKey(0) &0xFF if k==27: cv2.destroyAllWindows() elif k==ord('s'): cv2.imwrite("del_gray.jpg", res) cv2.destroyAllWindows() print("yeni dosya kaydedildi")
Kodlarımızı açıklarsak,
import cv2                                   >>Modülümüzü import ettik
res=cv2.imread(“del.jpg”, 0)
cv2.imshow(“resim”, res)          >> resmi okuyup display ettik
k=cv2.waitKey(0)                     >> bu fonksyion klavyeden aktivite bekleyen fonksiyondur . Eğer waitkey(time) belirtilen (milisaniye)de klavyede tuşa basılırsa  uygulama devam edecektir. Eğer süre geçerse, klavyede bir tuşa basıldığında program sonlanacaktır.Aynı zamanda klavyede hangi tuşa basıldığını tespit amaçlı da kullanılır. 64 bit cihazlarda klavye (key stroke ) işlemleri için &0xFF parametresini eklemeniz gerekecektir.
if k==27:
    cv2.destroyAllWindows()  > klavyeden ESC’ye (Ascii değeri 27 )basıldıysa  oluşturduğumuz tüm pencereleri  sonlandırıyoruz 
elif k==ord(‘s’): >> eğer s harfine basılmış ise ; 
cv2.imwrite(“del_gray.jpg”, res) >> resmi dosyasını çalıştığımız dizine yazıyoruz. 
cv2.destroyAllWindows() >> çalıştığımız tüm pencereleri sonlandırdık
print(“yeni dosya kaydedildi”)
Okunan Dosya:
Kaydettiğimiz dosya :
  kaynak kodlar : https://github.com/farcompen/Python-Opencv-image-read-write/blob/master/opencv.py
Bol Pythonlu Günler
0 notes
pythonturkiye-blog · 8 years ago
Text
Redhat Server'da SSL Kurulumu
New Post has been published on http://www.python.tc/redhat-serverda-ssl-kurulumu/
Redhat Server'da SSL Kurulumu
Evet şimdi sizlere apache server a ssl kurulumunu göstericem bu ssl kendimiz yapacağımız için self-signed(kendinden imzalı ) diye geçer ücretsiz ama server a browser da ngrimeye çalıştığınzda şöyle bir şeyle karşılaşırlar:
şimdi nasıl kuracağımıza geçelim.İlk önce  https://www.openssl.org/source/
bu siteye girip en güncel ssl i seçiyoruz sonrasında şu komutla
wget https://www.openssl.org/source/(indireceğiniz dosyanın adını yazıyoruz)
indirdikten sonra
tar -xzvf openssl-openssl-1.0.2l.tar.gz
yazarak arşivi çıkartıyoruz.
Daha sonra
cd openssl-1.0.2l dosyanın içine girip ./config
komutunu girerek biraz bekliyoruz.
make //daha sonra make install
komutlarını girip işlemleri bitirmesini bekliyoruz.Bu işlemler biraz uzun sürecektir.
sonrasında ssl sertifikası oluşturmak için pacahe dosyasımızın olduğu yere bir dosya oluşturuyoruz.
mkdir /etc/httpd/openssl
şimdi sertifikamızı oluşturmaya geldi sıra.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/openssl/apache.key -out /etc/httpd/openssl/apache.crt
-days dan sonra gelen sayı kaç gün geçerli olduğunu -keyout tan sonra gelen key lerin nerede depolanacağını out ta setifika için gerekli şeylerin nerede depolanacağını gösteriyor.Bu komuttan sonra size ait bazı bilgiler istiyor onları dolduruyoruz.
Şimdi eski sertifika yerini değiştirmemiz gerekiyor artık ssl kullanıcaz çünkü.Onun için bir program yüklememiz gerekli mod_ssl onun için redhat için:
yum install mod_ssl
Şimdi ise https olması için iptables ayarlarından 443 portunu açmamız gerekiyor çünkü ssl 443 portunu dinleyerek çalışır. onun için:
vim /etc/sysconfig/iptables
ben vim kullanıyorum siz başka şeyler kullanarakta dosyada değişiklik yapabilirsiniz.
sonrasında şu satırı ekliyoruz:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
Daha sonra iptables restart atıyoruz.Sonrasında artık ssl sertifikamız yükleniyor tarayıcınızdan girip bakabilirsiniz.
0 notes
pythonturkiye-blog · 8 years ago
Text
Python ile OpenCV Günlükleri
New Post has been published on http://www.python.tc/python-ile-opencv-gunlukleri/
Python ile OpenCV Günlükleri
İyi günler Python Türkiye ailesi. Yazı dizilerimize kaldığımız yerden devam ediyoruz.
Bugünki yazımızda bilgisayar görüntü işleme kütüphanelerinde en yaygın kullanılanlarından olan  OpenCv’ye giriş yapacağız. Akabinde , python ile Opencv uygulamalarımızı aktaracağız. Şimdilik çok sıkmadan, opencv hakkında kısa bilgiler vererek yazı dizimize giriş yapalım
Opencv , 1999 yılında İntel tarafından geliştirilen BSD lisanslı, c, c++ ile yazılmış, bir resim ya da video içerisindeki anlamlı bilgilerin çıkarılıp işlenmesinde kullanılan görüntü işleme kütüphanesidir. Gerçek zamanlı uygulamalarda çalışabilmesi, açık kaynak ve ücretsiz oluşu ve windows, MacOS x ve gnu/linux platformlarında kullanılabilmesi, kütüphanenin cazibesini artırmıştır. (an itibariyle 13.050 forklanma sayısına ulaşmıştır https://github.com/opencv/opencv )
Opencv temel olarak 5 temel bileşenden oluşmaktadır:
Cv bileşeni ; temel resim işleme fonksiyonlarını ve yüksek seviye algoritmaları barındıran bileşenidir
MLL Bileşeni; istatistiki veriler ve verilerin sınıflandırılması ile ilgili, makine öğrenmesinde kulanılan bileşenidir.
HighGUI bileşeni; OpenCV kütüphanesinde bir çok nesnenin create edildiği, video, resim kaydetmek, işleme, silmek gibi I/O işlemlerinin yapıldığı grafik ara birimidir.
CXCore bileşeni; Opencv ye ait cvSize, cvMat vb. gibi veri yapılarını barındıran XML desteği sağlayan bileşendir.
CvAux; Şablon ve resim eşleştirme, yüz tanıma, vücüt hareketlerini tanıma vb. algoritmaları barındıran bileşendir .
Gnu/Linux’a Opencv Kurulumu
Python ile Opencv çalışmalarını Linux Mint 18.1 64 bit Serena cihazında gerçekleştirmekteyim. Opencv’nin linux’a kurulumu için
>> http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu/
linkini  detaylı inceleyerek kurulumu gerçekleştirebilirsiniz
Bir sonraki yazımızda Python ile ilk opencv uygulamamızı gerçekleştireceğiz .
Bol Pythonlu günler..
0 notes
pythonturkiye-blog · 8 years ago
Text
Python 3 Dersleri YouTube'da
New Post has been published on http://www.python.tc/python-3-dersleri-youtubeda/
Python 3 Dersleri YouTube'da
https://www.youtube.com/playlist?list=PL8NqSOqspKLSAjWwgg1pottDdPQMq8bkp
Şuan derslerimiz şöyle: Python Nereden indirilir ve python.org sitesinin tanıtımı 1-Python arayüz tanıtıımı ve Matematiksel işlem ve oparatörler 2-Veri Tipleri 3-Değişken oluşturma , değişkenlere değer atama ve Veri tipi dönüşümü 4-Print() ve İnput() fonksiyonlarına giriş 5-Print() fonk. 3 farklı şekil ile ekrana yazdırma ve İnput() fonk. tür dönüşümü 6-Python için Anaconda İndirme ve Kurulumu 7-Anaconda Spyder tanıtımı 8-Mantıksal değerler, Karşılaştırma operatörleri ve Mantıksal operatörler 9-Akış kontrol deyimleri (İf,Else,Elif) ve örnekleri 10-Akış kontrol deyimler(if,Elif,Else) Örnek KULLANICI GİRİŞİ 11-Arasınav
0 notes
pythonturkiye-blog · 8 years ago
Text
raw paketiyle sniffer yapımı
New Post has been published on http://www.python.tc/raw-paketiyle-sniffer-yapimi/
raw paketiyle sniffer yapımı
Raw packet i oluşturarak trafik dinlemeyi göstericez.öncelikle kütüphanelerimizi import edelim.
import socket //raw paketi oluşturmak için gerekli import struct //gelen paketin içini açmak için gerekli import binascii //düzgün bir biçimde paketi okumak için gerekli
şimdi öncelikle raw paketimizi oluşturalım
raw=socket.socket(socket.PF_PACKET,socket.SOCK_RAW,socket.htons(0x0800))
socket.PF_PACKET linüx için geçerli eğer windows kullanıyorsanız socket.AF_INET kullanınız.
socket.SOCK_RAW soketimizin raw olacagını bildirdik.
socket.htons(0x0800) burada da ip ile ilgileneceğimizi bildirdik.
artık paketimiz hazır şimdi gelen paketleri durmadan almak için
while 1:
kullanalı sonrasında paketimizi almak için
paket=raw_recvfrom(2048)
paketimizi aldık şimdi bize lazım olan paket içindeki bilgileri almada bunun içindeki 14 bayt ethernet header, sonraki 20 bayt ise ip header olarak ayarlanmıştır onun için bize de bunlar lazım onun için şöyle bir kodlama gerekli
eth=paket[0][0:14]
  ilk olarak ethernet header aldık şimdi bunun ilk 6 baytı destination yani hedef diğer 6 bayt kaynak son 2 side type ı ifade eder bunları böyle ayırabilmek için struct metodunu kullanacağız.
eth1=struct.unpack("!6s6s2s",eth)
  evet paketi ayırdık sıra geldi bunları ekrana basmaya.
print binascii.hexlify(eth1[1])+"----->"+binascii.hexlify(eth1[0])+"type: "+binascii.hexlify(eth1[2])
  evet ekrana bastık bu bize hangi mac adresinden hangisine gittiğini gösteriyor sıra geldi ipleri almaya onun için daha demin 14 bayt için yaptığımız şimdi 20 bayt için yapacağız.
ip=paket[0][14:34]
  ip1=struct.unpack("!12s4s4s",ip)
  bu paketin ilk 12 si bizi ilgilendirmiyor sonra ki 4 bayt kaynak son 4 baytta hedef ip si
şimdi buradan sonra ekrana basmak kaldı.
print socket.inet_ntoa(ip1[1])+"------>"+socket.inet_ntoa(ip1[2])
evet ip leri de ekrana basmış olduk
scriptimizin son hali:
import socket import binascii import struct raw=socket.socket(socket.PF_PACKET,socket.SOCK_RAW,socket.htons(0x0800)) while 1: paket=raw.recvfrom(2048) eth=paket[0][0:14] eth1=struct.unpack("!6s4s4s",eth) print binascii.hexlify(eth1[1])+"--->"+binascii.hexlify(eth1[0])+"type: "+binascii.hexlify(eth1[2])+"\n" ip=paket[0][14:34] ip1=struct.unpack("!12s4s4s",ip) print socket.inet_ntoa(ip1[1])+"---->"+socket.inet_ntoa(ip1[2])>
  evet bu kodla bize gelen paketlerin hangi ip ve mac den geldiğini görebiliriz.İyi günler anlamadığınız yer varsa sorabilirsiniz.Bu script i geliştirip daha ayrıntılı bilgi almakta mümkün.
0 notes
pythonturkiye-blog · 8 years ago
Text
PortScanner Uygulaması Yazalım
New Post has been published on http://www.python.tc/portscanner-uygulamasi-yazalim/
PortScanner Uygulaması Yazalım
İyi günler Python Türkiye ailesi . Her güne 1 uygulama kaynak kodu amacıyla çıktığımız yola devam ediyoruz .
Özellikle sistem ve network üzerinde çalışan arkadaşlar bilirler, bazen bir ilaç gibi gelir ip-port scanner uygulaması, Bu sektörde uzun yıllar çalışanlar  Nmap’i bilirler. Python ile yazılmış , windows ,gnu/linux üzerinde çalışabilen, ip, port, versiyon, işletim sistemi, yazılım,exploit tarama hatta bruce-force yeteneğine sahip uygulamadır.
Bugün , /24 subnetinde 1-255 ip aralığındaki ipleri ve açık portlarını tarayacağımız bir uygulama yapacağız . Zaman almasın diye sık kullanılan (22,23,445,139,80,1521 vb. ) portları tarayacağız
import socket from datetime import datetime import sys
tarama işlemini yapacağımız metodumuzu yazalım
def port_tara(hedef,smask): baslangic_zamani = datetime.now() port = port_sor() for a in range(1,smask): ip=hedef[0]+"."+hedef[1]+"."+hedef[2]+"."+str(a) #ip'mizi oluşturuyoruz hedef_ip=socket.gethostbyname(ip) banner_ekle(ip) try: sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) sock.settimeout(1.2) sonuc=sock.connect_ex((hedef_ip,port)) #sırasıyla 1-254 ip aralığında , belirtilen port taraması yapılıyor if sonuc==0 : #taratılan ip'de hedef port açık dosya_yaz(hedef_ip,port) #açık portu ve ip bilgisini text dosyasına yazıyoruz print("Port açık ".format(port)) sock.close() except KeyboardInterrupt: print("CTRL+C'ye bastınız") sys.exit() except socket.gaierror: print("hostname çözümlenemedi") sys.exit() except socket.error: print("hedef ip'ye bağlanamadı") sys.exit() bitis_zamani=datetime.now() toplam_sure=bitis_zamani-baslangic_zamani print(str(toplam_sure) +"surede tamamlandi")
def banner_ekle(ip): print("*"*60) print('Lutfen bekleyiniz. Taranan ip : ',ip) print("*"*60)
kullanıcıya hang portun taranacağını sorduğumuz metod. Sık kullanılan portları tercih ettik
def port_sor(): port_ekrani= """ 1- FTP 2- SSH 3- TELNET 4- HTTP 5-NETBIOS 6-HTTPS 7-WINDOWS PAYLASIM 8-MSSQL 9-ORACLE 10-MYSQL """ print(port_ekrani) pn=0 portlar="1":"21","2":"22","3":"23","4":"80","5":"137","6":"443","7":"445","8":"1433","9":"1521","10":"3306" port_no=input("lütfen servisi seciniz :\t") pn=int(portlar[port_no]) return pn
def dosya_yaz(ip,port): with open("rapor.txt","r+") as dosya: okunan=dosya.read() dosya.seek(0) dosya.write(okunan + "\n" +str(ip)+":"+str(port))
şimdi kullanıcıdan hedef neteork ve subnet bilgisini alalım (şimdilik sadece /24 subnetinde tarama yapacağız)
ipp=input("Lütfen taranacak networkü giriniz / 192.168.1.0 şeklinde \t: ") ipp_ayrilmis=ipp.split(".") subnet_mask=input("lutfen subnet nask giriniz .. 8/24/32 \t :") if subnet_mask=="/24" or "24": smask=255 port_tara(ipp_ayrilmis,smask)
Örnek uygulama linktedir
 https://github.com/farcompen/PortScanner/blob/master/Port_tarayici.py
bol pythonlu günler ..
0 notes
pythonturkiye-blog · 8 years ago
Text
Bir Oyunu Ses ile Kontrol Etmek
New Post has been published on http://www.python.tc/bir-oyunu-ses-ile-kontrol-etmek/
Bir Oyunu Ses ile Kontrol Etmek
Tumblr media
Merhaba arkadaşlar. Çok uzun zamandır oyun oynamıyordum, canım sıkıldı biraz oyun oynayayım yahu dedim. Bilgisayarımda Windows yoktu, ben de Windows indireceğime Linux üzerine kurayım dedim.
İnternette oyun ararken, güzel bir uzay simülasyon oyunu olan Poineer’e denk geldim. Hoşuma gitti, indirip yaklaşık bir saat kadar oynadım.
Fark ettim ki, oyunun geneli klavye ile kontrol ediliyor. O an beynimde şimşekler çakmaya başladı. Ulan ben “kalkış yap” diyince araç kalkış yapsa, “motor gücü yüzde elli” dediğimde motor gücünü %50 değerine çıkarsa(bunun gibi bir çok şey) çok efsane olur dedim.
Çalışma mantığı şöyle olmalıydı;
— Sürekli ortamdaki sesleri dinle(STT) — Eğer mantıklı bir kelime/cümle yakalarsan, sonucu sendKey fonksiyonuna gönder. — Eğer sonuç beklenen veriler içerisinde varsa beklenen tuşa bas, yok ise en başa geri dön. — Son olarak görevini tamamladığını belirt(TTS) ve başa dön.
İlk sürümü hazır, henüz içerisinde az fonksiyon var ama şurdan ekleyebildiğim kadarını ekleyeceğim.
Programın ilk hali: https://github.com/blackvkng/PlayPioneerWithSpeech
Bu mantık ile siz de böyle programlar yapabilirsiniz 😀
Tumblr media
0 notes