Python ve OpenCV İle Karekod QR Code Tespit Etme ve Okuma

0 417

Bu yazımız da Python ve OpenCV görüntü işleme kütüphanesini kullanarak QRCode yani Karekod okuma, tespit etme ve içerdiği bilgileri okumayı anlatacağız.

Bir önceki yazımız da Python ile nasıl kendi QRCode (karekod) oluşturabileceğinizi anlatmıştık. Önceki yazımızı da mutlaka inceleyin.

Python ve OpenCV İle Karekod QR Code Tespit Etme ve Okuma

Resimden Qr Kod Tespit Etme

CV2 modülünü içe aktararak başlayacağız .

import cv2
Bundan sonra dosya sisteminden QR kodlu bir görüntü okuyacağız, böylece daha sonra kodunu çözebiliriz.
Önceki yazımızdaki kodu kullanarak kendi QR kodunuzu python kullanarak oluşturabilirsiniz. Veya online qr kodu üretici sitelerinden birinden yararlanarak bir QR kodu oluşturabilirsiniz.

Bizim kullanacağımız karekodumuz alttaki içerisinde “https://jn7.net” bilgisi içeren örneği kullanabilirsiniz.

Örnek QR Code
Örnek qr code “https://n7.net”

Bundan sonra görüntüyü cv2 modülünden imread fonksiyonunu kullanacağız. Dosya yolunu tam olarak belirtmeniz gerekmektedir. Eğer kod ile aynı klasördeyse alttaki gibi kullanabilirsiniz.

image = cv2.imread('jn7.net-qr-code.png')

Bundan sonra , QR Kodunu tespit etmek ve çözmek için kullanacağımız QRCodeDetector sınıfında bir nesne oluşturacağız .

qrCodeDetector = cv2.Q

Bunu takiben , QR Kodunu tespit etmek istediğimiz görüntüyü girdi olarak geçirerek bu nesnedeki DetAndDecode yöntemini çağıracağız .

Bu yöntem, bir dizi değeri aşağıdaki sırayla döndürür:

  • Çözülmüş metin [1]. QR Kodu bulunamazsa boş bir dizedir.
  • Bulunan QR kodunun köşe noktalarının çıktı dizisi. Bulunmazsa boş olacaktır [1].
  • Rektifiye edilmiş ve ikili hale getirilmiş QR Kodunu içeren isteğe bağlı çıktı görüntüsü [1]. Bu derste bundan faydalanmayacağız.
decodedText, points, _ = qrCodeDetector.detectAndDecode(image)

Not: Kullandığımız  “_” işareti, kullanmayacağız, üçüncü dönen değeri görmezden için basit kuralıdır.

Resimde QR Kodunun bulunmadığı durumlar olabileceğinden, iade edilen noktaları kontrol edeceğiz. Nokta yoksa, görüntüde QR Kodu bulunamadı demektir.

if points is not None:
    # Karekodun tespit edildiğinde yapılacak işlemler
 
else:
    print("QR kod tespit edilemedi.")

Bir QR Kodunun tespit edildiğini varsayarsak, daha sonra detectAndDecode yöntemi tarafından döndürülen köşe dizisini kullanarak, onu sınırlandıran çizgiler çizeriz .

Sadece dizinin uzunluğunu elde edeceğiz ve her bir köşe tarafından tekrarlayacağız, hemen sonraya bağlayacağız. QR Kodunun etrafındaki şekli kapatmak için dizideki son tepe noktasının ilkiyle bağlanması gerektiğini unutmayın.

openCV ile Karekodun Çerçevesini Tespit Etme

Cv2 modülünden line fonksiyonunu çağırarak bir görüntüde çizgi çizebiliriz . 

Kısacası, daha önce de belirtildiği gibi , aşağıdaki girişleri geçen line fonksiyonunu çağırıyoruz :

  • image : çizgiyi çizeceğimiz görüntü.
  • nokta 1 : çizginin ilk noktası. X ve y koordinatlarına sahip bir demet olarak belirtilir.
  • nokta 2 : çizginin ikinci noktası. X ve y koordinatlarına sahip bir demet olarak belirtilir.
  • renk : çizginin rengi. Bu, BGR formatında 3 renk içeren bir demet olarak tanımlanır. Maviye ayarlayacağız.
  • kalınlık : çizginin piksel cinsinden kalınlığı. 5 piksel olarak ayarlayacağız.

Noktaları vertices dizisinden geçirirken bunları tuple’lara dönüştürmemiz gerektiğini unutmayın.

nrOfPoints = len(points)
 
for i in range(nrOfPoints):
    nextPointIndex = (i+1) % nrOfPoints
    cv2.line(image, tuple(points[i][0]), tuple(points[nextPointIndex][0]), (255,0,0), 5)

Bundan sonra kodu çözülen metni QR Kodundan yazdıracağız ve ardından görüntüyü göstereceğiz. Görüntü şimdi QR Kodunu şekli etrafında mavi çizgilerle göstermelidir.

print(decodedText)    
 
cv2.imshow("Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Kodumuzun tamamı alttaki gibi olacaktır.

Resimden Qr Kod Tespit Etme Kodu

import cv2
 
image = cv2.imread('C:/Users/N/Desktop/testQRCode.png')
 
qrCodeDetector = cv2.QRCodeDetector()
 
decodedText, points, _ = qrCodeDetector.detectAndDecode(image)
 
if points is not None:
 
    nrOfPoints = len(points)
 
    for i in range(nrOfPoints):
        nextPointIndex = (i+1) % nrOfPoints
        cv2.line(image, tuple(points[i][0]), tuple(points[nextPointIndex][0]), (255,0,0), 5)
 
    print(decodedText)    
 
    cv2.imshow("Image", image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
     
 
else:
    print("QR code not detected")

WebCam Kullanarak QR Kod Çözme

Bu işlemi webcam’dan veya telefon kamerasından aldığımız görüntüyü kullanarak karekod tespit etme ve tespit edilen karekodu çözümleme işlemi için kullanabileceğiniz örnek kodumuzda alttaki gibidir.

Bu kod sayesinde gelen görüntüyü canlı olarak tarar ve ekrandaki karekodu tespit edip, çözümlemesini yapıp ekrana bilgiyi yazdırır. OpenCV ile ekrana  yazı yazdırma ile ilgili yazımızda bu işlem hakkında daha fazla bilgi edinebilirsiniz.

import cv2

c=cv2.VideoCapture(1)
qr=cv2.QRCodeDetector()

while True:
    _,frame=c.read()

    decodedText, points, _ = qr.detectAndDecode(frame)
    if points is not None:
        nrOfPoints = len(points)
        for i in range(nrOfPoints):
            nextPointIndex = (i + 1) % nrOfPoints
            cv2.line(frame, tuple(points[i][0]), tuple(points[nextPointIndex][0]), (255, 0, 0), 5)
            font = cv2.FONT_HERSHEY_SIMPLEX
            cv2.putText(frame, decodedText, (140 , 50), font, .5, (0, 0, 0), 1, cv2.LINE_AA)
            print(decodedText)

    cv2.imshow("Cap", frame)
    if (cv2.waitKey(1)&0xff==27):
        break

c.release()

OpenCV ve Python İle Karekod Okuma Sonuç

Diğer OpenCV ve Python Uygulama Örneklerimiz

  1. OpenCV Nedir?
  2. Python ve OpenCV ile Video Oynatma
  3. Python ve OpenCV ile Videoyu Renklerine Ayırma
  4. Python ve OpenCV İle Video Kaydetme
  5. Python ve OpenCV ile Resim İşlemlerine Giriş
  6. Python ve OpenCV Kullanarak Yüz Tanıma Uygulaması
  7. Python ve OpenCV Kullanarak Bilgisayar Kamerasından Görüntü Almak
  8. Pyton ve OpenCV Kullanarak Kenar Algılama Uygulaması
  9. Python ve OpenCV Kullanarak Resimlere Elastik Efekti Verme
  10. Python ve OpenCV Kullanarak SuperPixel İşlemi Uygulaması
  11. Python Ve OpenCv İle WebCam’den Aldığınız Görüntüyü İşlemek
  12. Python Ve OpenCV Ile Resimlerinizi JSON Formatına Çevirin
  13. Python Ve OpenCV Ile Youtube Videolarını Stream Yapma
  14. Python Ve OpenCV Kullanarak Bir Resmin Tüm Piksellerine Ulaşmak
  15. Python ve OpenCV kullanarak komik aynalar uygulaması
  16. Python Ve OpenCV Ile Basit Şekil Algılama Uygulaması
  17. Python Ve OpenCV Kullanarak Görüntülere Gerçek Zamanlı Metin Yazma
  18. Python Ve OpenCV Kullanarak Belli Bir Nokta Ile Hareket Arası Mesafe Ölçümü

Ayrıca Python öğrenmek isteyenler içinde Hazırladığımız Python derslerine de göz atabilirsiniz. programlama bilginiz geliştirmek ve farklı örnekler çözmek içinde 100 Algoritma sorusuna göz atabilirsiniz.

Yorumlarınız bekliyoruz.

Kaynak Techtutorial

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul etmek Mesajları Oku