Перевод фото таблицы в матрицу из 0 и 1?
Имеется набор, состоящий из фото таблицы, покрашенной в черные и белые цвета. Нужно преобразовать данное фото в матрицу, состоящую из 0 и 1, где 1 - черный цвет, 0 - белый. Как это реализовать? Мне не хватает знаний и идей выполнения данной задачи
Ответы (2 шт):
Автор решения: MBo
→ Ссылка
Псевдокод несложный
for y = 0..99
for x = 0..99
A[y][x] = 1 - pixel(3*y,3*x)
А как pixel() реализовать - зависит от используемой графической библиотеки и формата изображения.
Автор решения: wololo
→ Ссылка
JavaScript:
function get_data(src) {
let image = new Image();
image.crossOrigin = "anonymous";
image.src = src;
let res = new Promise(resolve => {
image.onload = () => {
let context = document.createElement("canvas").getContext("2d");
context.canvas.width = image.naturalWidth;
context.canvas.height = image.naturalHeight;
context.drawImage(image, 0, 0);
let image_data = context.getImageData(0, 0, context.canvas.width, context.canvas.height);
let pixels = image_data.data;
let matr = [];
for (let row = 1; row < image_data.height; row += 3)
{
let matr_row = [];
for (let col = 1; col < image_data.width; col += 3)
{
let index = row * 4 * image_data.width + 4 * col;
let [red, green, blue] = [pixels[index+0], pixels[index+1], pixels[index+2]];
let bit = (red + green + blue) / 3 > 127 ? 0 : 1;
matr_row.push(bit);
}
matr.push(matr_row);
}
resolve(matr);
};
});
return res;
}
get_data("https://i.ibb.co/Qb0yFQ4/test.png").then(matr => {
let res_html = "";
for (let row = 0; row < matr.length; ++row)
res_html += "row: " + String(row).padStart(2, "0") + " " + matr[row].join("") + "<br>";
document.getElementById("div_id").innerHTML = res_html;
});
#div_id {
font-family: monospace;
}
<div id = "div_id"></div>
