@JRBRO

Как правильнее написать такую проверку?

Есть папка с 4 файлами
1 из них правильный
Правильность можно определить при помощи скрипта, который измеряет схожесть изображения

from skimage.metrics import structural_similarity
import cv2
import sys

before_path = ['sys.argv[1] + "1.1.png"',  
'sys.argv[1] + "1.2.png"',  
'sys.argv[1] + "1.3.png"',  
'sys.argv[1] + "1.4.png"']  #ТАК МОЖЕТ ВЫГЛЯДЕТЬ СПИСОК ВСЕХ ВОЗМОЖНЫХ ДЛЯ ОЦЕНКИ ИЗОБРАЖЕНИЙ ДЛЯ ЦИКЛА
before = cv2.imread(before_path)
after = cv2.imread(sys.argv[2])
before_gray = cv2.cvtColor(before, cv2.COLOR_BGR2GRAY)
after_gray = cv2.cvtColor(after, cv2.COLOR_BGR2GRAY)
score, difference= structural_similarity(before_gray, after_gray, full=True)
score = str(score)[:4]
print(score)


Референсы идут с названиями 1.1, 1.2, 1.3, 1.4

Как правильно будет выглядеть логика

if ssim >= 0.8 то все окей
if ssim <=0.8 пробуй другой референс

Что-то я теорию придумал, а вот в рабочий код перевести не могу, хотя это элементарный козалось бы цикл.
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
sheerluck
@sheerluck
from pathlib import Path
from skimage.metrics import structural_similarity
import cv2 
import sys 

path = Path(sys.argv[1])

ref = path / "reference standard.jpg" 
imref = cv2.imread(ref.as_posix())
grayref = cv2.cvtColor(imref, cv2.COLOR_BGR2GRAY)

info = []
for m in path.iterdir():
    if "reference standard.jpg" == m.name:
        continue
    im = cv2.imread(m.as_posix())
    try:
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        score, difference = structural_similarity(grayref, gray, full=True)
        info.append((score, m.as_posix()))
    except Exception:
        print(f"{m} is bad")

for score, path in sorted(info):
    print(score, path)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
before_gray = cv2.cvtColor(before, cv2.COLOR_BGR2GRAY)
after_gray = cv2.cvtColor(after, cv2.COLOR_BGR2GRAY)

Вот красавец. В базисе серого цвета идет сравнение.

А если я радугу буду сравнивать? Твой-же алгоритм слепой в этом смысле.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы