1
0
Fork 0
onnx-web/api/onnx_web/chain/blend_denoise_fastnlmeans.py

41 lines
1.1 KiB
Python
Raw Normal View History

from logging import getLogger
2023-11-19 00:13:13 +00:00
from typing import Optional
import cv2
from PIL import Image
from ..params import ImageParams, SizeChart, StageParams
from ..server import ServerContext
from ..worker import ProgressCallback, WorkerContext
from .base import BaseStage
from .result import StageResult
logger = getLogger(__name__)
class BlendDenoiseFastNLMeansStage(BaseStage):
max_tile = SizeChart.max
def run(
self,
_worker: WorkerContext,
_server: ServerContext,
_stage: StageParams,
_params: ImageParams,
sources: StageResult,
*,
2023-11-13 05:29:00 +00:00
strength: int = 3,
stage_source: Optional[Image.Image] = None,
callback: Optional[ProgressCallback] = None,
**kwargs,
) -> StageResult:
logger.info("denoising source images")
results = []
2024-01-06 02:11:58 +00:00
for source in sources.as_arrays():
data = cv2.cvtColor(source, cv2.COLOR_RGB2BGR)
data = cv2.fastNlMeansDenoisingColored(data, None, strength, strength)
results.append(cv2.cvtColor(data, cv2.COLOR_BGR2RGB))
2024-01-06 02:11:58 +00:00
return StageResult.from_arrays(results, metadata=sources.metadata)