from PIL import Image
#Открываем картинки
img1 = Image.open("img1.png")
img2 = Image.open("img2.png")
def same_imgs(img1, img2):
size1 = img1.size #Получаем размер картинки (ширина, высота)
pixels1 = []
for x in range(size1[0]):
for y in range(size1[1]):
pixels1.append(img1.getpixel((x, y))) #Добавляем цвета по каждой координате
size2 = img2.size #Получаем размер картинки (ширина, высота)
pixels2 = []
for x in range(size2[0]):
for y in range(size2[1]):
pixels2.append(img2.getpixel((x, y))) #Добавляем цвета по каждой координате
if pixels1 == pixels2: #Проверяем равны ли все цвета
return True
else:
return False
print(same_imgs(img1, img2))
img1.close()
img2.close()
from skimage.metrics import structural_similarity
import cv2
def orb_sim(img1, img2):
orb = cv2.ORB_create()
kp_a, desc_a = orb.detectAndCompute(img1, None)
kp_b, desc_b = orb.detectAndCompute(img2, None)
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(desc_a, desc_b)
similar_regions = [i for i in matches if i.distance < 50]
if len(matches) == 0:
return 0
return len(similar_regions) / len(matches)
img1 = cv2.imread('test_img1.jpg', 0)
img2 = cv2.imread('test_img2.jpg', 0)
orb_similarity = orb_sim(img1, img2)
print(f"Фото схожи на: {orb_similarity}")
function getCDEK(pointA, pointB, userId) {
var token = logInCDEK().access_token;
var url = "https://api.edu.cdek.ru/v2/calculator/tarifflist";
let payload = {
"type": 1,
"currency": 1,
"lang": "rus",
"from_location": {
"code": 270
},
"to_location": {
"code": 44
},
"packages": [
{
"height": 10,
"length": 10,
"weight": 4000,
"width": 10
}
]
};
var options = {
method: "POST",
muteHttpExceptions: true,
headers: {
"Content-type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer " + token,
},
payload : payload, // или JSON.strigify(payload), проверяйте
}
var response = UrlFetchApp.fetch(url, options);
Logger.log(response)
return response;
}
command
+ shift
+ .
, то увидишь скрытые файлы. Но мы всё равно создаём файлы в текстовом редакторе или в IDE, а не в проводнике. И редактор и Git этот файл видят в любом случае. В чем проблема написать в контроллере пару where, join, мб как-то по хитрому обработать данные?Завтра появится задача сделать всё то же самое, но в консоли. Потащищ копипасту или начнёшь выносить общий код в реквесты, репозитории и прочие места?
Тогда просто переносим все в модель? зачем плодить репозитории (кроме как абстрагироваться от конкретной ORM) и остальные сущности?Репозитории актуальны с паттерном DM и не актуальны с паттерном AR.