#angular #typescript #openlayers-6
Вопрос:
Я использую OpenLayers 6.3.1 и пытаюсь автоматически исправить изображение и нарисовать обработанные пиксели. Для этого до сих пор у меня есть:
private getPixel(index: number) : number[][] { return this.imageHistogram.getPixelValue(index); } if(this.rasterSource == null) { this.rasterSource = new Raster({ sources: [this.imageLayer], operation: function (pixels){ if(this.imageHistogram == null) { if(pixels instanceof Number) { this.imageHistogram = new Histogram(pixels as number[][]); } } return this.imageHistogram.getPixelValue(0); }, lib: { Histogram: Histogram, getPixel: this.imageHistogram.getPixelValue } }); } if(this.imageEffectsLayer == null) { this.imageEffectsLayer = new ImageLayer({ zIndex: imageEffectsZIndex, className: "effects-layer", source: this.rasterSource }); } this.map.addLayer(this.imageEffectsLayer);
Таким образом, базовая настройка работает, т. Е. Если я заменю строку возврата произвольным значением (пиксель[0] = 255), это повлияет на вывод. Я почти уверен, что проблема в разделе библиотеки и что мне не нужна Histogram: Histogram,
строка. Однако строка getPixel: this.imageHistogram.getPixelValue
приводит к возникновению ошибки:
ERROR Error: Uncaught (in promise): TypeError: Cannot read properties of null (reading 'getPixelValue') TypeError: Cannot read properties of null (reading 'getPixelValue')
Я попробовал несколько вариантов этой линии:
- getPixelValue: this.imageHistogram.getPixelValue
- getPixelValue:Значение GetPixel
- getPixelValue: Гистограмма.getPixelValue
а также в примере, где я вызвал локальную функцию, которая ее обертывает, но я все равно получаю ошибку при вызове той, которую я обертываю. Как мне сообщить OpenLayers в этой ситуации о функции, которую я хочу, чтобы она вызывала?
P.S. я также пытался объявить объект гистограммы локально для операции, но это тоже не сработало.