Minggu, 07 Februari 2016

Feature Matching (Homography) Brute Force OpenCV Python Tutorial

import numpy as np
import cv2
from matplotlib import pyplot as plt

def drawMatches(img1, kp1, img2, kp2, matches):
    """
    My own implementation of cv2.drawMatches as OpenCV 2.4.9
    does not have this function available but it's supported in
    OpenCV 3.0.0

    This function takes in two images with their associated
    keypoints, as well as a list of DMatch data structure (matches)
    that contains which keypoints matched in which images.

    An image will be produced where a montage is shown with
    the first image followed by the second image beside it.

    Keypoints are delineated with circles, while lines are connected
    between matching keypoints.

    img1,img2 - Grayscale images
    kp1,kp2 - Detected list of keypoints through any of the OpenCV keypoint
              detection algorithms
    matches - A list of matches of corresponding keypoints through any
              OpenCV keypoint matching algorithm
    """

    # Create a new output image that concatenates the two images together
    # (a.k.a) a montage
    rows1 = img1.shape[0]
    cols1 = img1.shape[1]
    rows2 = img2.shape[0]
    cols2 = img2.shape[1]

    out = np.zeros((max([rows1,rows2]),cols1+cols2,3), dtype='uint8')

    # Place the first image to the left
    out[:rows1,:cols1] = np.dstack([img1, img1, img1])

    # Place the next image to the right of it
    out[:rows2,cols1:] = np.dstack([img2, img2, img2])

    # For each pair of points we have between both images
    # draw circles, then connect a line between them
    for mat in matches:

        # Get the matching keypoints for each of the images
        img1_idx = mat.queryIdx
        img2_idx = mat.trainIdx

        # x - columns
        # y - rows
        (x1,y1) = kp1[img1_idx].pt
        (x2,y2) = kp2[img2_idx].pt

        # Draw a small circle at both co-ordinates
        # radius 4
        # colour blue
        # thickness = 1
        cv2.circle(out, (int(x1),int(y1)), 4, (255, 0, 0), 1)  
        cv2.circle(out, (int(x2)+cols1,int(y2)), 4, (255, 0, 0), 1)

        # Draw a line in between the two points
        # thickness = 1
        # colour blue
        cv2.line(out, (int(x1),int(y1)), (int(x2)+cols1,int(y2)), (255, 0, 0), 1)


    # Show the image
    cv2.imshow('Matched Features', out)
    cv2.waitKey(0)
    cv2.destroyWindow('Matched Features')

    # Also return the image if you'd like a copy
    return out

img1 = cv2.imread('box.png',0)    # queryImage
img2 = cv2.imread('box_in_scene.png',0) # trainImage

# Initiate SIFT detector
orb = cv2.ORB()

# find the keypoints and descriptors with SIFT
kp1, des1 = orb.detectAndCompute(img1,None)
kp2, des2 = orb.detectAndCompute(img2,None)
# create BFMatcher object
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)

# Match descriptors.
matches = bf.match(des1,des2)

# Sort them in the order of their distance.
matches = sorted(matches, key = lambda x:x.distance)

# Draw first 10 matches.
img3 = drawMatches(img1,kp1,img2,kp2,matches[:10])

plt.imshow(img3),plt.show()

23 komentar:

  1. lagi cari bandar togel.. gabung saja di dewalotto.com
    selain ada togel ada games dan casino juga
    depo wd cuma 20 ribu
    Wujudkan impian anda hanya di dewalotto.com

    BalasHapus
  2. Yuk daftarkan diri anda bersama kami di k.e.l.i.n.c.i.99 ya..
    Di Add Ya kontak 2.B.1.E.7.B.8.4...
    ada CS ANGELNA yang cantik...
    dapatkan freechip 5000 setiap hari nya..

    BalasHapus
  3. Agen poker terbesar dan terpercaya ARENADOMINO.COM
    minimal depo dan wd cuma 20 ribu
    dengan 1 userid sudah bisa bermain 7 games
    pin BB : D_8_E_B_A_A_7_C

    BalasHapus
  4. "Masih Bingung Mencari Situs Poker / Domino / BandarQ / AduQ Yang isa di percaya ?

    Yang Mempunyai % Kemenangan Lebih Besar . ?

    Kartu"" Yang Berkualitaas . ?

    Pelayanan CS Yang Ramah / Tips"" Dan Trick Cara Bermain . ?

    Poker Online - HTTP://ARENADOMINO.COM

    Minimal Deposit : Rp.20.000,

    Bonus Refferal Seumur Hidup

    Bonus Turn Over Tanpa Batas

    Player VS Player ( 100% Tanpa Bot )

    8 Games Dalam 1 User ID .
    POKER - DOMINO - ADUQ - BANDARQ - CAPSA - BANDAR POKER - BANDAR SAKONG
    Rasakan Sensasi nya Menjadi Bandar , hanya di BANDARQ dan BANDAR SAKONG .
    Dengan Pelayanan Terbaik ( Customer Service ) .
    Customer Service Online 24 Jam .
    Daftar Langsung isi data2 : http://arenadomino.org/app/Default0.aspx?ref=dominobandar&lang=id "

    BalasHapus
  5. Kesempatan dapat Uang ... share ya 5.E.E.8.0.A.F.E. F4n5833771n9 ^_^

    BalasHapus

  6. "Ingin Bermain Togel Online ?

    Tapi Ngak Tau Bandar Togel Online Yang Bisa Di Percaya ?

    Disini Nih , Kelinci99 Bandar Togel Aman & Live Casio

    Discount Terbesar 4D : 66% , 3D : 59%, 2D : 29%

    Untuk Member Baru Ada Freechips & Bonus Deposit

    Untuk Info Lebih Lengkap : KELINCI99.ORG
    Di Jamin 100% Aman & Terpercaya

    Proses Deposit / Withdraw Kurang Dari 2 Menit
    Minimal
    Deposit Rp.20.000
    Minimal Withdraw Rp.50.000
    Bet
    Invest Tidak Ada Batas Line

    Minimal Bet 1.000

    Tunggu Apa Lagi ?
    Daftar Sekarang Juga Di : www.kelinci99.casino/link.php?member=ddc"

    BalasHapus
  7. Game online yang menghasilkan ayukk ini infonya .. F4n588371n9 :) BBM : 5EE80AFE :)

    BalasHapus
  8. "Ingin Bermain Togel Online ?

    Tapi Ngak Tau Bandar Togel Online Yang Bisa Di Percaya ?

    Disini Nih , Kelinci99 Bandar Togel Aman & Live Casio

    Discount Terbesar 4D : 66% , 3D : 59%, 2D : 29%

    Untuk Member Baru Ada Freechips & Bonus Deposit

    Untuk Info Lebih Lengkap : KELINCI99.ORG
    Di Jamin 100% Aman & Terpercaya

    Proses Deposit / Withdraw Kurang Dari 2 Menit
    Minimal
    Deposit Rp.20.000
    Minimal Withdraw Rp.50.000
    Bet
    Invest Tidak Ada Batas Line

    Minimal Bet 1.000

    Tunggu Apa Lagi ?
    Daftar Sekarang Juga Di : www.kelinci99.casino/link.php?member=ddc"

    BalasHapus

  9. Lagi Cari Bandar Togel Online Dengan Games Lainya Yang Lengkap ?
    Tapi Gak Tau Situs Mana Yang Bisa Di Percaya ?
    Daftar Di : HTTPS://DEWALOTTO.WEBSITEs
    Minimal Deposit Rp.20.000,-
    Minimal Withdraw Rp.20.000,-
    Lengkap 1 Userid Dapat Bermain :
    Togel, Taruhan Bola, Live Casino & Sabung Ayam
    Proses Deposit / Withdraw Kurang Dari 2-3 Menit
    Perlayanan Terbaik ( Di Layani CS Yang Ramah )
    Website Online 24 Jam / Setiap Harinya
    Daftarkan Sekarang Juga : HTTPS://DEWALOTTO.WEBSITE

    BalasHapus
  10. "Ingin Bermain Togel Online ?

    Tapi Ngak Tau Bandar Togel Online Yang Bisa Di Percaya ?
    Disini Nih , Kelinci99
    Bandar Togel Aman & Live Casio
    Discount Terbesar 4D : 66% , 3D : 59%, 2D : 29%

    Untuk Member Baru Ada Freechips & Bonus Deposit
    Untuk Info Lebih Lengkap : KELINCI99
    .ORG
    Di Jamin 100% Aman & Terpercaya

    Proses Deposit / Withdraw Kurang Dari 2 Menit
    Minimal Deposit Rp.20.000
    Minimal Withdraw Rp.50.000

    Bet Invest Tidak Ada Batas Line
    Minimal Bet 1.000
    Tunggu Apa Lagi ?
    Daftar Sekarang Juga Di : www.kelinci99.casino/link.php?member=ddc"

    BalasHapus
  11. Lagi Cari Bandar Togel Online Dengan Games Lainya Yang Lengkap ?
    Tapi Gak Tau Situs Mana Yang Bisa Di Percaya ?
    Daftar Di : HTTPS://DEWALOTTO.WEBSITEs
    Minimal Deposit Rp.20.000,-
    Minimal Withdraw Rp.20.000,-
    Lengkap 1 Userid Dapat Bermain :
    Togel, Taruhan Bola, Live Casino & Sabung Ayam
    Proses Deposit / Withdraw Kurang Dari 2-3 Menit
    Perlayanan Terbaik ( Di Layani CS Yang Ramah )
    Website Online 24 Jam / Setiap Harinya
    Daftarkan Sekarang Juga : HTTPS://DEWALOTTO.WEBSITE

    BalasHapus

  12. "DewaLotto 1'Userid Main Semua Permainan Poker , Togel , Casino , Sport Books, Tembak Ikan,
    Joker , Batu Goncang, Dan Banyak Lagi Games Lainnya.
    Kunjungi Sekarang Juga Di DewaLotto-Com pin BB : 7BF59345

    Jangan lewatkan kesempatan menjadi kaya dengan bermain permainan yang menantang ,
    yang kami berikan ini yukk silahkan daftar minimal deposit 20rb saja.."

    BalasHapus
  13. "Ingin Bermain Togel Online ?

    Tapi Ngak Tau Bandar Togel Online Yang Bisa Di Percaya ?
    Disini Nih , Kelinci99
    Bandar Togel Aman & Live Casio
    Discount Terbesar 4D : 66% , 3D : 59%, 2D : 29%

    Untuk Member Baru Ada Freechips & Bonus Deposit
    Untuk Info Lebih Lengkap : KELINCI99
    .ORG
    Di Jamin 100% Aman & Terpercaya

    Proses Deposit / Withdraw Kurang Dari 2 Menit
    Minimal Deposit Rp.20.000
    Minimal Withdraw Rp.50.000

    Bet Invest Tidak Ada Batas Line
    Minimal Bet 1.000
    Tunggu Apa Lagi ?
    Daftar Sekarang Juga Di : www.kelinci99.casino/link.php?member=ddc"

    BalasHapus

  14. "DewaLotto 1'Userid Main Semua Permainan Poker , Togel , Casino , Sport Books, Tembak Ikan,
    Joker , Batu Goncang, Dan Banyak Lagi Games Lainnya.
    Kunjungi Sekarang Juga Di DewaLotto-Com pin BB : 7BF59345

    Jangan lewatkan kesempatan menjadi kaya dengan bermain permainan yang menantang ,
    yang kami berikan ini yukk silahkan daftar minimal deposit 20rb saja.."

    BalasHapus

  15. "Dafar Sekarang Juga Di DewaLotto .
    Minimal Depo / Withdraw Rp.20.000
    Bandar Togel 8 Pasaran Terbesar ,Casino,Taruhan Bola , Laga Ayam , Tembak Ikan , Batu Goncang ,
    Dan Banyak Games Lainnya ! pin BB : 7BF59345
    Semua permainan bisa di mainkan dengan 1 userid saja yukk.."
    Daftar Sekarang Juga Di : www.dewalotto.online atau www.dewalotto.org

    BalasHapus
  16. Togel Online Terpercaya Dan Games Laiinnya Live Casino.
    HOT PROMO NEW MEMBER FREECHIPS 5ribu !!
    NEXT DEPOSIT 50ribu FREECHIPS 5RB !!
    Ada Bagi2 Freechips Untuk New Member + Bonus Depositnya Loh ,
    Yuk Daftarkan Sekarang Mumpung Ada Freechips Setiap Harinya
    segera daftar dan bermain ya selain Togel ad juga Games Online Betting lain nya ,
    yang bisa di mainkan dgn 1 userid saja .
    yukk daftar di www.kelinci99.casino atau www.kelinci99.org

    BalasHapus
  17. "Bosan Bermain Togel ?????

    Ingin Bermain Poker Online Dengan Uang Asli ?

    Tapi Ngak Tau Situs Poker Online Yang Bisa Di Percaya . ?

    Poker Online - www.arenadomino.poker
    Minimal Deposit / Withdraw : Rp.20.000,-
    Bonus Refferal 20% Seumur Hidup .

    Bonus Turn Over 0.5% Tanpa Batas .
    Player VS Player ( 100% Tanpa Bot ) .

    8 Games Dalam 1 User ID .
    POKER - DOMINO - ADUQ - BANDARQ - CAPSA -
    BANDAR POKER - SAKONG - BANDAR66

    Rasakan Sensasi nya Menjadi Bandar , hanya di BANDARQ , BANDAR POKER , BANDAR66 .

    Dengan Pelayanan Terbaik ( Customer Service ) .

    Customer Service Online 24 Jam .

    Daftar Langsung isi data2 : www.arenadomino.poker , www.arenadomino.info , www.arenadomino.co

    BalasHapus
  18. Hiii .... buat kamu yang suka BOLA, yuk mari gabung di fans__bett__ing ^_^
    Komunitas sepak bola terbesar di indonesia :) 5.E.E.8.0.A.F.E | banyak kejutan menanti | fans | :)

    BalasHapus
  19. suka main game online ,tapi uang jajan terbatas guys??
    yuk, gabung bersama kami di F4n5--83771nG => Agen BOLA terbesar tidak perlu keluar bnyak uang nya ya guys,, cuma 50 rb loh kamu sudah bisa bergabung bersama kami , MINAT ????? yuk langsung saja ,
    untuk info lebih lanjut silahkan di add saja ya
    WA kami @ +855 963 156 245
    line @ fansbetting
    wechat @ fansbetting3
    bersama dengan kami CS fansbetting thankyou,,,

    BalasHapus
  20. Togel Online Terpercaya Dan Games Laiinnya Live Casino.
    HOT PROMO NEW MEMBER FREECHIPS 5ribu !!
    NEXT DEPOSIT 50ribu FREECHIPS 5RB !!
    Ada Bagi2 Freechips Untuk New Member + Bonus Depositnya Loh ,
    Yuk Daftarkan Sekarang Mumpung Ada Freechips Setiap Harinya
    segera daftar dan bermain ya selain Togel ad juga Games Online Betting lain nya ,
    yang bisa di mainkan dgn 1 userid saja .
    yukk daftar di www.kelinci99.casino atau www.kelinci99.org

    BalasHapus
  21. Game online yang menghasilkan ayukk ini infonya .. F4n588371n9 :) BBM : 5EE80AFE :)
    WA @ +855 963 156 245
    line @ fansbetting
    wechat @ fansbetting3
    bersama dengan kami CS fansbetting thankyou,,,

    BalasHapus
  22. Fansbetting aman dan terpercaya
    buruan daftar, main dan menangkan
    PIN BB : 5EE80AFE :)

    BalasHapus
  23. Ada Bagi2 Freechips Untuk New Member + Bonus Depositnya Loh ,
    Yuk Daftarkan Sekarang Mumpung Ada Freechips Setiap Harinya segera daftar dan bermain ya
    selain Togel ad juga Games Online Betting lain nya yang bisa di mainkan dgn 1 userid saja
    yukk daftar di www.kelinci99.me

    BalasHapus