Сопоставление изображения с веб-камеры со списком изображений размером 64x64Python

Программы на Python
Ответить
Anonymous
 Сопоставление изображения с веб-камеры со списком изображений размером 64x64

Сообщение Anonymous »

Я пытаюсь подключить гитарную педаль к компьютеру. Этот интерфейс webMIDI почти работает, но не умеет работать с некоторыми эффектами, и я пытаюсь это исправить. Моя цель — вручную установить эффект с помощью кнопки педали, затем через интерфейс USB запросить у системы информацию о нем и записать пару «эффект-информация». Чтобы избавить меня от необходимости вручную записывать выбранный эффект, я использую веб-камеру, чтобы сфотографировать эффект на экране педали, чтобы сопоставить его с одним из примерно 200 изображений размером 64x64 в репозитории вышеуказанного проекта. /p>
Проблема в совпадении изображений. Я могу взять довольно четкое изображение с веб-камеры, обрезать его до этого размера и попробовать установить пороговое значение; но я не могу заставить Python сопоставить с ним правильное изображение размером 64x64 (увеличенное в 3 раза). Этот пример, очевидно, лучше соответствует Bass Squeak, чем Comp
Мой код

Код: Выделить всё

for file in files:
features = 10

img = cv2.imread(effect_image_folder + file, 0)
scaled_img = cv2.resize(img, None, fx=1, fy=1, interpolation=cv2.INTER_CUBIC)

orb = cv2.ORB_create()
kp_effect, des_effect = orb.detectAndCompute(scaled_img, None)
kp_pedal, des_pedal = orb.detectAndCompute(template_gray, None)

bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck = True)

matches = bf.match(des_effect, des_pedal)

matches = sorted(matches, key=lambda x:x.distance)
# img3 = cv2.drawMatches(scaled_img, kp_effect, template_gray, kp_pedal, matches[:features], None, flags = cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS)
# plt.imshow(img3)
# plt.show()

total_dist = 0
for cv_match in matches[0:features]:
total_dist = total_dist + cv_match.distance
# print(total_dist)

confidences = confidences + [total_dist]

и тогда победителем становится тот, у которого уровень доверия наименьший. У кого-нибудь есть предложения о том, как мне это сделать лучше? Я новичок в CV, поэтому, насколько я знаю, это плохой алгоритм для этой задачи. Сначала я попробовал сопоставление шаблонов, но решил, что оно слишком чувствительно к масштабированию, повороту и, вероятно, другим факторам.

[1]: https://multistomp.github.io/zoom-ms-utility/
[2]: https://i.sstatic.net/Y7Pq4Kx7.png
[3]: https://i.sstatic.net/826nLNDT.png
[4]: https://i.sstatic.net/zKBPje5n.png
[5]: https://i.sstatic.net/oTjqKCyA.png

Подробнее здесь: https://stackoverflow.com/questions/792 ... x64-images
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»