Commit 40b0fa11 authored by dmMaze's avatar dmMaze
Browse files

support chatgpt (#154,#122)

parent 1e03a003
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -32,3 +32,4 @@ config/config.json
*.pt
*.ckpt
*.onnx
*.7z
 No newline at end of file
+0 −3
Original line number Diff line number Diff line
import sys, os
import os.path as osp
sys.path.append(osp.dirname(osp.dirname(__file__)))
 No newline at end of file
+0 −59
Original line number Diff line number Diff line
import sys, os

from qtpy.QtCore import Qt, QRectF
from qtpy.QtGui import QImage, QPainter, QFont, QColor
from qtpy.QtWidgets import QApplication, QWidget

def pt2px(pt):
    print(LDPI)
    return int(round(pt * LDPI / 72.))

def px2pt(px):
    return px / LDPI * 72.

class MyWidget(QWidget):
    def __init__(self):
        global LDPI, DPI
        super().__init__()
        image = QImage(1000, 1000, QImage.Format_ARGB32)
        image.fill(Qt.GlobalColor.transparent)
        from qtpy.QtGui import QGuiApplication
        DPI = QGuiApplication.primaryScreen().physicalDotsPerInch()
        LDPI = QGuiApplication.primaryScreen().logicalDotsPerInch()
        print(f'DPI: {DPI}, LDPI: {LDPI}')
        
        p = QPainter(image)
        p.setPen(Qt.GlobalColor.black)
        font = QFont("华文彩云")
        font.setHintingPreference(QFont.HintingPreference.PreferNoHinting)
        px = 20
        font.setPixelSize(px)
        p.setFont(font)
        p.drawText(QRectF(0, 0, 1000, 1000), 'Hello淦')
        print(px2pt(px))
        font.setPointSizeF(px2pt(px))
        p.setFont(font)
        p.setPen(QColor(255, 0, 0, 127))
        p.drawText(QRectF(0, 0, 1000, 1000), 'Hello淦')
        image.save('data/px2pt.png', 'PNG')

        image.fill(Qt.GlobalColor.transparent)
        p.setPen(Qt.GlobalColor.black)
        pt = 200
        font.setPointSizeF(pt)
        p.setFont(font)
        p.drawText(QRectF(0, 0, 1000, 1000), 'Hello淦')
        font.setPixelSize(pt2px(pt))
        p.setFont(font)
        p.setPen(QColor(255, 0, 0, 127))
        p.drawText(QRectF(0, 0, 1000, 1000), 'Hello淦')
        image.save('data/pt2px.png', 'PNG')

        p.end()

if __name__ == '__main__':
 
    app = QApplication(sys.argv)
    W = MyWidget()
    W.show()
    sys.exit(app.exec())
 No newline at end of file
+0 −11
Original line number Diff line number Diff line
import sys, os
import os.path as osp
sys.path.append(osp.dirname(osp.dirname(__file__)))
from ui.imgtrans_proj import ProjImgTrans
from ui.constants import PROGRAM_PATH
os.chdir(PROGRAM_PATH)

if __name__ == '__main__':
    proj_path = r'data/testpacks/manga'
    proj = ProjImgTrans(proj_path)
    proj.dump_doc()
 No newline at end of file
+0 −66
Original line number Diff line number Diff line
import sys, os
import os.path as osp
sys.path.append(osp.dirname(osp.dirname(__file__)))

from dl import InpainterBase, AOTInpainter, PatchmatchInpainter
from utils.io_utils import imread, imwrite, find_all_imgs
from ui.imgtrans_proj import ProjImgTrans
from ui.constants import PROGRAM_PATH
os.chdir(PROGRAM_PATH)

import numpy as np
import cv2
from tqdm import tqdm

SAVE_DIR = 'tmp/inpaint_test'

def test_inpainter(inpainter: InpainterBase, proj: ProjImgTrans, inpaint_by_block=False, show=False):

    os.makedirs(SAVE_DIR, exist_ok=True)
    print('Testing inpainter:', inpainter.__class__.__name__)
    print('Inpainter params:', inpainter.params)
    inpainter.inpaint_by_block = inpaint_by_block
    print('inpaint by block: ', inpainter.inpaint_by_block)
    time_cost = 0
    for page_name in tqdm(proj.pages):
        blk_list = proj.pages[page_name]
        proj.set_current_img(page_name)
        img, mask = proj.img_array, proj.mask_array

        t0 = cv2.getTickCount()
        inpainted = inpainter.inpaint(img, mask, blk_list)
        time_cost += (cv2.getTickCount() - t0) / cv2.getTickFrequency()

        if show:
            cv2.imshow('img', img)
            cv2.imshow('mask', mask)
            cv2.imshow('inpainted', inpainted)
            cv2.waitKey(0)
        imwrite('tmp/inpaint_test/{}_inpainted.png'.format(page_name), inpainted)

    print(f'Time cost: {time_cost}, avg: {time_cost / len(proj.pages)}')


def test_aot(proj: ProjImgTrans, device: str = 'cpu', inpaint_size: int = 1024, inpaint_by_block=True, show=False):
    
    params = AOTInpainter.params
    params['device']['select'] = device
    params['inpaint_size']['select'] = inpaint_size
    aot = AOTInpainter(**params)

    img = np.ones((inpaint_size, inpaint_size, 3), dtype=np.uint8)
    mask = np.ones((inpaint_size, inpaint_size), dtype=np.uint8)
    aot.inpaint(img, mask)
    test_inpainter(aot, proj, show=show, inpaint_by_block=inpaint_by_block)

def test_patchmatch(proj: ProjImgTrans, inpaint_by_block=True, show=False):
    inpainter = PatchmatchInpainter()
    test_inpainter(inpainter, proj, show=show, inpaint_by_block=inpaint_by_block)

if __name__ == '__main__':

    manga_dir = 'data/testpacks/manga'
    manga_proj = ProjImgTrans(manga_dir)
    # comic_proj = ProjImgTrans(comic_dir2)
    test_aot(manga_proj, device='cuda', inpaint_by_block=True, inpaint_size=2048)
    # test_patchmatch(comic_proj, inpaint_by_block=False)
 No newline at end of file
Loading