talosのプログラミング教室

【特徴点マッチング】東海オンエアてつや・としみつとセラヤTV消しゴム・もっこり坂井は別人か?

スポンサーリンク

はじめに

こんにちは,talosです.

みなさん,セラヤTVはご存知でしょうか.

知る人ぞ知る期待のYouTuberです.



動画を見ていただければわかると思うのですが,東海オンエアのてつや・としみつとそっくりなんです.

でも,てつや・としみつとは別人らしい...

ということで,本当に別人か確かめていきます.


スポンサーリンク



準備

YouTubeからスクショを取ってきました.

後でリサイズしても伸びたりしないように,顔の部分だけ正方形にトリミングします.

てつや
f:id:talosta:20190904233917p:plain

としみつ
f:id:talosta:20190904233934p:plain

消しゴム
f:id:talosta:20190904233948p:plain

もっこり坂井
f:id:talosta:20190904233957p:plain

ソースコード

OpenCVを使って特徴点マッチングを行っていきます.

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

def similarity(path1, path2):
    img1 = cv2.imread(path1, 0)
    img2 = cv2.imread(path2, 0)

    img1 = cv2.resize(img1, (500, 500))
    img2 = cv2.resize(img2, (500, 500))
    
    orb = cv2.ORB_create()
    
    kp1, des1 = orb.detectAndCompute(img1, None)
    kp2, des2 = orb.detectAndCompute(img2, None)
   
    bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    matches = bf.match(des1, des2)
    matches = sorted(matches, key = lambda x:x.distance)
    img3 = cv2.drawMatches(img1, kp1, img2, kp2, matches[:100], None, flags=2)
    plt.imshow(img3)

similarity('./tetsuya.png', './keshigomu.png')
similarity('./toshimitsu.png', './mokkorisakai.png')

結果

左:てつや 右:消しゴム
f:id:talosta:20190904233239p:plain

左:としみつ 右:もっこり坂井
f:id:talosta:20190904233321p:plain

ごちゃごちゃして見にくいですが,ほとんど一致していません.

一致していると,

f:id:talosta:20190904234501p:plain

このように線が交差しないはずなんです.

これでてつや・としみつとセラヤTVの二人は別人であることが証明されました.

おわりに

うーん,複雑な気分.