mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
almost all of backend migrated; restoration next
This commit is contained in:
44
invokeai/backend/image_util/patchmatch.py
Normal file
44
invokeai/backend/image_util/patchmatch.py
Normal file
@ -0,0 +1,44 @@
|
||||
'''
|
||||
This module defines a singleton object, "patchmatch" that
|
||||
wraps the actual patchmatch object. It respects the global
|
||||
"try_patchmatch" attribute, so that patchmatch loading can
|
||||
be suppressed or deferred
|
||||
'''
|
||||
from ldm.invoke.globals import Globals
|
||||
import numpy as np
|
||||
|
||||
class PatchMatch:
|
||||
'''
|
||||
Thin class wrapper around the patchmatch function.
|
||||
'''
|
||||
|
||||
patch_match = None
|
||||
tried_load:bool = False
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
@classmethod
|
||||
def _load_patch_match(self):
|
||||
if self.tried_load:
|
||||
return
|
||||
if Globals.try_patchmatch:
|
||||
from patchmatch import patch_match as pm
|
||||
if pm.patchmatch_available:
|
||||
print('>> Patchmatch initialized')
|
||||
else:
|
||||
print('>> Patchmatch not loaded (nonfatal)')
|
||||
self.patch_match = pm
|
||||
else:
|
||||
print('>> Patchmatch loading disabled')
|
||||
self.tried_load = True
|
||||
|
||||
@classmethod
|
||||
def patchmatch_available(self)->bool:
|
||||
self._load_patch_match()
|
||||
return self.patch_match and self.patch_match.patchmatch_available
|
||||
|
||||
@classmethod
|
||||
def inpaint(self,*args,**kwargs)->np.ndarray:
|
||||
if self.patchmatch_available():
|
||||
return self.patch_match.inpaint(*args,**kwargs)
|
Reference in New Issue
Block a user