|
import io |
|
|
|
import numpy as np |
|
import pytest |
|
from PIL import Image |
|
|
|
from controlnet_aux.processor import MODELS, Processor |
|
|
|
|
|
@pytest.fixture(params=[ |
|
'scribble_hed', |
|
'softedge_hed', |
|
'scribble_hedsafe', |
|
'softedge_hedsafe', |
|
'depth_midas', |
|
'mlsd', |
|
'openpose', |
|
'openpose_hand', |
|
'openpose_face', |
|
'openpose_faceonly', |
|
'openpose_full', |
|
'scribble_pidinet', |
|
'softedge_pidinet', |
|
'scribble_pidsafe', |
|
'softedge_pidsafe', |
|
'normal_bae', |
|
'lineart_coarse', |
|
'lineart_realistic', |
|
'lineart_anime', |
|
'canny', |
|
'shuffle', |
|
'depth_zoe', |
|
'depth_leres', |
|
'depth_leres++', |
|
'mediapipe_face' |
|
]) |
|
def processor(request): |
|
return Processor(request.param) |
|
|
|
|
|
def test_processor_init(processor): |
|
assert isinstance(processor.processor, MODELS[processor.processor_id]['class']) |
|
assert isinstance(processor.params, dict) |
|
|
|
|
|
def test_processor_call(processor): |
|
|
|
with open('test_image.png', 'rb') as f: |
|
image_bytes = f.read() |
|
image = Image.open(io.BytesIO(image_bytes)) |
|
|
|
|
|
resolution = 512 |
|
W, H = image.size |
|
H = float(H) |
|
W = float(W) |
|
k = float(resolution) / min(H, W) |
|
H *= k |
|
W *= k |
|
H = int(np.round(H / 64.0)) * 64 |
|
W = int(np.round(W / 64.0)) * 64 |
|
|
|
|
|
processed_image = processor(image) |
|
assert isinstance(processed_image, Image.Image) |
|
assert processed_image.size == (W, H) |
|
|
|
|
|
def test_processor_call_bytes(processor): |
|
|
|
with open('test_image.png', 'rb') as f: |
|
image_bytes = f.read() |
|
|
|
|
|
processed_image_bytes = processor(image_bytes, to_pil=False) |
|
assert isinstance(processed_image_bytes, bytes) |
|
assert len(processed_image_bytes) > 0 |