Я хочу сравнить два изображения с помощью Python, но я не знаком с этим языком.
У меня есть два изображения одинакового размера. Я должен создать массив, содержащий попиксельное различие двух изображений. Наконец, мне нужно вычислить среднее значение суммы всех значений массива как число с плавающей запятой.
Я могу сделать это с помощью Processing, но я не могу сделать это с помощью Python.
Если два изображения одинаковы, результат, очевидно, будет 0.
Я хотел бы перевести этот код на Python (самое важное - это значение окончательного среднего).
PImage img,img2;
int threshold = 64;
void setup(){
//size(600,400);
img = loadImage(args[0]);
img2 = loadImage(args[1]);
println(comparison(img,img2));
exit();
}
PImage binarization(PImage img,int threshold){
for(int i = 0; i < img.pixels.length; i++){
if(green(img1.pixels[i]) > threshold) img.pixels[i] = color(255);
else img.pixels[i] = color(0);
}
return img;
}
float comparison(PImage img, PImage img2){
img.filter(GRAY);
img2.filter(GRAY);
img = binarazation(img,threshold);
img2 = binarization(img2,threshold);
int array[] = new int[img.pixels.length];
for(int i = 0; i < img.pixels.length; i++){
array[i] = int( abs(green(img.pixels[i]) - green(img2.pixels[i])));
}
float average = 0;
for(int i = 0; i < img.pixels.length; i++){
average+= array[i];
}
average = average/img.pixels.length;
return average;
}
РЕДАКТИРОВАТЬ ::::
Большое спасибо!
Функция сравнения, которую я разместил ранее, не совсем верна
на самом деле должно появиться изображение (после того, как оно было преобразовано в оттенки серого) с другим изображением (какой алгоритм был применен)
как я могу изменить функцию сравнения, опубликованную elgordorafiki?
Алгоритм Канни для использования в следующем:
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread ('img', 0)
edges = cv2.Canny (img, 100,110)
plt.subplot (2,1,1), plt.imshow (img, cmap = 'gray')
plt.title ('Original Image'), plt.xticks ([]), plt.yticks ([])
plt.subplot (2,1,2), plt.imshow (edges, cmap = 'gray')
plt.title ('Canny Edge Detection'), plt.xticks ([]), plt.yticks ([])
plt.show ()