Görüntüyle eşleşen bir videodaki Kareleri bulma


-1

Opencv kullanarak bir resimle eşleşen kareleri bulmaya çalışıyorum. Ayrıca görüntünün bulunduğu zaman dilimini bulmak istiyorum. Video maskeli bir videodur. Şimdiye kadarki kod:

 def occurence_counter(self):
        img = cv2.imread('ref_img.jpg', cv2.IMREAD_COLOR)
        # shrink
        img = cv2.resize(img, (10, 10))
        # convert to b&w
        img = color.rgb2gray(img)
        similarities=[]

      result=self.parse_video(img,str(self.lineEdit.text()).strip(),1,False)
        print result

def parse_video(self,image, video, n_matches, break_point=False, 
           verbose=False):

    similarities = [{'frame': 0, 'similarity': 0}]
    frame_count = 0

    cap = cv2.VideoCapture(video)
    while (cap.isOpened()):

        ret, frame = cap.read()

        if (type(frame) == type(None)):
            break

        # increment frame counter
        frame_count += 1

        # resize current video frame
        small_frame = cv2.resize(frame, (10, 10))
        # convert to greyscale
        small_frame_bw = color.rgb2gray(small_frame)

Yanıtlar:


1

Yanılmıyorsam ne yapmak istediğinizi Şablon Eşleştirme olarak adlandırıyorsanız , bu özelliğin açıklamalı eğitimini burada bulabilirsiniz . Ayrıca bu konu sizin için, özellikle de Şablon Eşleştirmenin ötesinde, Histogramları ve Özellik Eşleşmesini Karşılaştırma açıklamasında açıklanan @Sam cevabı da yararlı olabilir .


2
Bu bağlantı soruyu cevaplayabilse de, cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak daha iyidir. Bağlantılı sayfa değişirse, yalnızca bağlantı yanıtları geçersiz olabilir. - Şu kaynaktan
scotty3785

@ scotty3785 Bu gönderi, yalnızca bağlantıya verilen bir cevap olma ölçütünü karşılamıyor çünkü bağlantıları kaldırmak için kullandıysanız hala yararlı bilgiler içeriyor: buna Şablon Eşleştirme adı verilir. Bağlantılar kopsa bile, burada devam etmek için bazı bilgiler var.
EJoshuaS

0

Aynı kareyi bulmak o kadar kolay değil. Pek çok olası çözüm var. Burada olası çözümleri çok genel bir şekilde tanımlayacağım.

Şablon eşleme

Şablon eşleştirme, görüntülerde karşılık gelen piksellerin benzerliğini hesaplayan algoritmadır. Öyleyse, çok benzer bir görüntü arıyorsanız (döndürme, çeviri, büyük yoğunluk değişiklikleri olmadan), o kadar da kötü bir algoritma değildir. Tüm görüntüler için çok hızlı değil. İki görüntünün benzerliğini kontrol etmek yerine, aynı görüntüyü birkaç görüntüde veya daha büyük görüntüde daha küçük görüntüde bulmak için kullanılır. https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_template_matching/py_template_matching.html

Tüm görüntüler için, sadece görüntüleri çıkarmak ve sonra şablon eşleştirmeyi kullanmak daha kolaydır. Çok daha hızlı. Birbirlerine çok benzer oldukları varsayımı olmalı.

Histogram Karşılaştırma

Histogram karşılaştırmasını kullanabilirsiniz. En hızlı yol bu, ancak doğru değil. Otlar ve elmalar hem yeşildir, hem de birbirine benzemez. Renk söz konusu olduğunda HSV renk boşluğunu kullanmak genellikle daha iyidir. https://docs.opencv.org/3.4.1/d8/dc8/tutorial_histogram_comparison.html

Özellik eşlemesi

Algoritma görüntüleri üzerinde simillar karakteristik noktaları arıyor. Resimlerdeki özellikleri bulmak için birçok algoritma vardır. Değişimi ve dönüşü vb. Ölçeklendirmek için duyarsız olmalıdırlar. Ancak bu özellik çıkarma algoritmasına bağlıdır. https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_features_meaning/py_features_meaning.html#features-meaning

Diğer alogithms

Diğer algoritmalar PSNR veya SSIM'dir. Hiç kullanmadım, ancak orijinal ve bulanık görüntü veya tüm video dizisinin benzerliği için benzerliği hesaplamak için kullanılır. https://docs.opencv.org/3.4.2/d5/dc4/tutorial_video_input_psnr_ssim.html

Siz de görüntülerin karmaşasını karşılaştırmayı deneyebilirsiniz. Çok ilginç algoritma (benim için), ancak iyi belgelenmemiş. https://www.pyimagesearch.com/2017/11/27/image-hashing-opencv-python/

Özellik eşleştirme bu görev türü için en çok kullanılan algoritmadır. Bunun nedeni, özellik eşleştirme alogrithms, görüntüler farklı koşullarda, farklı koşullarda veya yalnızca kısmen örtüşen görüntüler alındığında benzer görüntü parçalarını algılayabilir. Motion From Yapı algoritmaları genellikle özellik eşleştirmeyi kullanıyor. https://hub.packtpub.com/exploring-structure-motion-using-opencv/ Sorunun çözümü her zaman elimizdeki verilere bağlıdır. Yani tek bir cevap yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.