def rebuild_img(u, sigma, v, percent): m = len(u) n = len(v) a = np.zeros((m, n))
count = (int)(sum(sigma)) curSum = 0 k = 0 while curSum <= count * percent: uk = u[:, k].reshape(m, 1) vk = v[k].reshape(1, n) a += sigma[k] * np.dot(uk, vk) curSum += sigma[k] k += 1
a[a < 0] = 0 a[a > 255] = 255
核心代码2:
主要就是定义inderence函数和gradio前端的实现
import os os.system("pip install --upgrade pip") os.system("pip install opencv-python-headless") import cv2 import numpy as np import gradio as gr from func import rebuild_img
def inference(img,k): input_img = cv2.imread(img, cv2.IMREAD_COLOR) u, sigma, v = np.linalg.svd(input_img[:, :, 0]) R = rebuild_img(u, sigma, v, k) u, sigma, v = np.linalg.svd(input_img[:, :, 1]) G = rebuild_img(u, sigma, v, k) u, sigma, v = np.linalg.svd(input_img[:, :, 2]) B = rebuild_img(u, sigma, v, k) restored_img = np.stack((R, G, B), 2) return Image.fromarray(restored_img[:, :, ::-1])
File "/home/user/.local/lib/python3.8/site-packages/cv2/__init__.py", line 8, in <module> from .cv2 import * ImportError: libGL.so.1: cannot open shared object file: No such file or directory