Почему мой код иногда влияет на imageData.data правильно, а иногда (случайно) неожиданным образом?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой код иногда влияет на imageData.data правильно, а иногда (случайно) неожиданным образом?

Сообщение Anonymous »

У меня есть код, который должен влиять на изображение, применяя фильтр Лапласа отдельно к верхней левой четверти и к нижней левой четверти. Но при этом иногда второе применение фильтра вместо этого влияет на правый нижний угол и иногда пропускает канал. Я хоть убей не могу понять, почему это явно недетерминировано.

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

var canvas;
var canvasImageData;
var canvasContext;
main()

let kernel = [
[0.25, 0.5, 0.25],
[0.5, -3, 0.5],
[0.25, 0.5, 0.25]
]

async function main() {
var api = await fetch('https://dog.ceo/api/breeds/image/random')
.then(response => response.json())

var image = await fetch(api.message)
.then(response => response.blob())

const imageBitmap = await createImageBitmap(image);

var canvas = document.createElement('canvas');
canvas.width = imageBitmap.width;
canvas.height = imageBitmap.height;
canvas.id = 'image-canvas';

canvasContext = canvas.getContext('2d')
canvasContext.drawImage(imageBitmap, 0, 0);

document.body.appendChild(canvas);

canvasImageData = canvas.getContext('2d').getImageData(0, 0, canvas.width, canvas.height);
canvasImageData = applyLaplace(canvasImageData, 0, canvas.height / 2, 0, canvas.width / 2, canvas.width, canvas.height, kernel);
canvasImageData = applyLaplace(canvasImageData, canvas.height / 2, canvas.height, 0, canvas.width / 2, canvas.width, canvas.height, kernel);

canvasContext.putImageData(canvasImageData, 0, 0);
}

//applyLaplace(canvasImageData)
function applyLaplace(canvas, height_start, height_end, width_start, width_end, canvasWidth, canvasHeight, kernel) {
let data = new Uint8ClampedArray(canvas.data);

function pos(h, l) {
return h * canvasWidth * 4 + l * 4;
}

for (let height = height_start + 1; height < height_end - 1; height++) {
for (let width = width_start + 1; width < width_end - 1; width++) {

let sum1 = 0;
let sum2 = 0;
let sum3 = 0;

for (let kernel_height = -1; kernel_height 

Подробнее здесь: [url]https://stackoverflow.com/questions/79344216/why-does-my-code-affect-the-imagedata-data-at-times-correctly-and-at-other-rand[/url]
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Завершение работы связано с systemctl неожиданным образом, как это достигается?
    Anonymous » » в форуме Linux
    0 Ответы
    63 Просмотры
    Последнее сообщение Anonymous
  • BeautifulSoup в Python find() работает неожиданным образом
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Android Monhofit Post Type Data Data Wations Data Null Null
    Anonymous » » в форуме Android
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Android Monhofit Post Type Data Data Wations Data Null Null
    Anonymous » » в форуме Android
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • Код Python не может правильно идентифицировать и подсчитать диагональные полосы в случайно сгенерированной сетке
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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