Обработка нескольких изображений и подсчет количества темных и белых пикселей.[МЕДЛЕННЫЙ] - PullRequest
0 голосов
/ 28 июня 2019

Процесс чтения изображения занимает слишком много времени.

Для этого я использую модуль jimp.

var Jimp = require("jimp");
var fs =require('fs');

fs.readdir("./unZipped/", function(err, filenames) {
    if (err) {
      onError(err);
      return;
    }


    //filenames.forEach(function(filename) {
    for (var i = 0; i < filenames.length; i++){
        var filename = filenames[i]; 
        if (filename.indexOf('.png')>-1){

            processimage(filename)
        }
    }
});

var processimage=function (imageFile){
    Jimp.read('./unZipped/'+imageFile, (err, lenna) => {
        console.log("in read");
        if (err) throw err;
        var iwidth = lenna.bitmap.width ;
        var iheight = lenna.bitmap.height ;
        //console.log("image width: "+ iwidth);

        //console.log("image height: "+ iheight);
    var darkcount =0;
        for (var i =0; i<iwidth;i++){
            for (var j=0; j<iheight;j++){

                var col = lenna.getPixelColor(i, j); 
                //console.log ("i "+ i + " j " +j+ "col: "+ col);

                if (col===255)
                {
                    darkcount++;

                }
            }
        }
        var totalSize=i*j
        var percentlight2Dark= (totalSize-darkcount)/totalSize;
        console.log (imageFile+" darkcount "+ darkcount + " total count  " +i*j+ " %age light dark : "+percentlight2Dark*100);
    });
}

Ожидаемое поведение Он считывает папку с несколькими изображениями (706), вычисляет темные и белые пиксели и преобразует количество белых пикселей в процент.

Текущее поведение Код делает то, что мне нужно, кроме очень медленного. Я заметил, что он пытается открыть все изображения одновременно, а затем приступить к расчетам. У меня есть 8 Гб оперативной памяти ноутбука. Пока код считывает изображения, оперативная память достигает пика до 6 ГБ, и программа останавливается примерно на 10 минут, прежде чем приступить к вычислениям.

Может быть, кто-нибудь может помочь мне прочитать изображения по одному, выполнить расчеты и продолжить работу с остальными изображениями в папке, чтобы они не заполняли память. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...