feat
fix minio and s3
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import time
|
||||
|
||||
import numpy as np
|
||||
from pymilvus import MilvusClient
|
||||
|
||||
@@ -71,11 +72,8 @@ class KeypointDetection(object):
|
||||
]
|
||||
try:
|
||||
client = MilvusClient(uri=MILVUS_URL, token=MILVUS_TOKEN, db_name=MILVUS_ALIAS)
|
||||
start_time = time.time()
|
||||
res = client.upsert(
|
||||
collection_name=MILVUS_TABLE_KEYPOINT,
|
||||
data=data,
|
||||
)
|
||||
# start_time = time.time()
|
||||
res = client.upsert(collection_name=MILVUS_TABLE_KEYPOINT, data=data)
|
||||
# logging.info(f"save keypoint time : {time.time() - start_time}")
|
||||
client.close()
|
||||
return dict(zip(KEYPOINT_RESULT_TABLE_FIELD_SET, result.reshape(12, 2).astype(int).tolist()))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import io
|
||||
import logging
|
||||
import time
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
@@ -8,6 +7,7 @@ from PIL import Image
|
||||
from minio import Minio
|
||||
|
||||
from app.core.config import *
|
||||
from app.service.utils.oss_client import oss_get_image
|
||||
from ..builder import PIPELINES
|
||||
|
||||
|
||||
@@ -70,11 +70,7 @@ class LoadImageFromFile(object):
|
||||
class LoadBodyImageFromFile(object):
|
||||
def __init__(self, body_path):
|
||||
self.body_path = body_path
|
||||
self.minioClient = Minio(
|
||||
f"{MINIO_URL}",
|
||||
access_key=MINIO_ACCESS,
|
||||
secret_key=MINIO_SECRET,
|
||||
secure=MINIO_SECURE)
|
||||
# self.minioClient = Minio(f"{MINIO_URL}", access_key=MINIO_ACCESS, secret_key=MINIO_SECRET, secure=MINIO_SECURE)
|
||||
|
||||
# response = self.minioClient.get_object("aida-mannequins", "model_1693218345.2714431.png")
|
||||
|
||||
@@ -82,33 +78,33 @@ class LoadBodyImageFromFile(object):
|
||||
def __call__(self, result):
|
||||
result["image_url"] = result['body_path'] = self.body_path
|
||||
result["name"] = "mannequin"
|
||||
if not result['image_url'].lower().endswith(".png"):
|
||||
logging.info(1)
|
||||
bucket = self.body_path.split("/", 1)[0]
|
||||
object_name = self.body_path.split("/", 1)[1]
|
||||
new_object_name = f'{object_name[:object_name.rfind(".")]}.png'
|
||||
image = self.minioClient.get_object(bucket, object_name)
|
||||
image = Image.open(io.BytesIO(image.data))
|
||||
image = image.convert("RGBA")
|
||||
data = image.getdata()
|
||||
#
|
||||
new_data = []
|
||||
for item in data:
|
||||
if item[0] >= 230 and item[1] >= 230 and item[2] >= 230:
|
||||
new_data.append((255, 255, 255, 0))
|
||||
else:
|
||||
new_data.append(item)
|
||||
image.putdata(new_data)
|
||||
image_data = io.BytesIO()
|
||||
image.save(image_data, format='PNG')
|
||||
image_data.seek(0)
|
||||
image_bytes = image_data.read()
|
||||
image_path = f"{bucket}/{self.minioClient.put_object(bucket, new_object_name, io.BytesIO(image_bytes), len(image_bytes), content_type='image/png').object_name}"
|
||||
self.body_path = image_path
|
||||
result["image_url"] = result['body_path'] = self.body_path
|
||||
response = self.minioClient.get_object(self.body_path.split("/", 1)[0], self.body_path.split("/", 1)[1])
|
||||
# if not result['image_url'].lower().endswith(".png"):
|
||||
# bucket = self.body_path.split("/", 1)[0]
|
||||
# object_name = self.body_path.split("/", 1)[1]
|
||||
# new_object_name = f'{object_name[:object_name.rfind(".")]}.png'
|
||||
# image = self.minioClient.get_object(bucket, object_name)
|
||||
# image = Image.open(io.BytesIO(image.data))
|
||||
# image = image.convert("RGBA")
|
||||
# data = image.getdata()
|
||||
# #
|
||||
# new_data = []
|
||||
# for item in data:
|
||||
# if item[0] >= 230 and item[1] >= 230 and item[2] >= 230:
|
||||
# new_data.append((255, 255, 255, 0))
|
||||
# else:
|
||||
# new_data.append(item)
|
||||
# image.putdata(new_data)
|
||||
# image_data = io.BytesIO()
|
||||
# image.save(image_data, format='PNG')
|
||||
# image_data.seek(0)
|
||||
# image_bytes = image_data.read()
|
||||
# image_path = f"{bucket}/{self.minioClient.put_object(bucket, new_object_name, io.BytesIO(image_bytes), len(image_bytes), content_type='image/png').object_name}"
|
||||
# self.body_path = image_path
|
||||
# result["image_url"] = result['body_path'] = self.body_path
|
||||
# response = self.minioClient.get_object(self.body_path.split("/", 1)[0], self.body_path.split("/", 1)[1])
|
||||
# put_image_time = time.time()
|
||||
result['body_image'] = Image.open(io.BytesIO(response.read()))
|
||||
# result['body_image'] = Image.open(io.BytesIO(response.read()))
|
||||
result['body_image'] = oss_get_image(bucket=self.body_path.split("/", 1)[0], object_name=self.body_path.split("/", 1)[1], data_type="PIL")
|
||||
# logging.info(f"Image.open time is : {time.time() - put_image_time}")
|
||||
return result
|
||||
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
import random
|
||||
from io import BytesIO
|
||||
|
||||
# import boto3
|
||||
import cv2
|
||||
import numpy as np
|
||||
from PIL import Image
|
||||
from minio import Minio
|
||||
|
||||
from app.core.config import *
|
||||
from app.service.utils.oss_client import oss_get_image
|
||||
from ..builder import PIPELINES
|
||||
|
||||
minio_client = Minio(
|
||||
MINIO_URL,
|
||||
access_key=MINIO_ACCESS,
|
||||
secret_key=MINIO_SECRET,
|
||||
secure=MINIO_SECURE)
|
||||
|
||||
# minio_client = Minio(MINIO_URL, access_key=MINIO_ACCESS, secret_key=MINIO_SECRET, secure=MINIO_SECURE)
|
||||
|
||||
|
||||
# s3 = boto3.client('s3', aws_access_key_id=S3_ACCESS_KEY, aws_secret_access_key=S3_AWS_SECRET_ACCESS_KEY, region_name=S3_REGION_NAME)
|
||||
|
||||
@@ -56,17 +53,18 @@ class Painting(object):
|
||||
|
||||
@staticmethod
|
||||
def get_gradient(bucket_name, object_name):
|
||||
image_data = minio_client.get_object(bucket_name, object_name)
|
||||
# image_data = minio_client.get_object(bucket_name, object_name)
|
||||
# image_data = s3.get_object(Bucket=bucket_name, Key=object_name)['Body']
|
||||
|
||||
# 从数据流中读取图像
|
||||
image_bytes = image_data.read()
|
||||
# image_bytes = image_data.read()
|
||||
|
||||
# 将图像数据转换为numpy数组
|
||||
image_array = np.asarray(bytearray(image_bytes), dtype=np.uint8)
|
||||
# image_array = np.asarray(bytearray(image_bytes), dtype=np.uint8)
|
||||
|
||||
# 使用OpenCV解码图像数组
|
||||
image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)
|
||||
# image = cv2.imdecode(image_array, cv2.IMREAD_COLOR)
|
||||
image = oss_get_image(bucket=bucket_name, object_name=object_name, data_type="cv2")
|
||||
return image
|
||||
|
||||
@staticmethod
|
||||
@@ -494,16 +492,20 @@ class PrintPainting(object):
|
||||
if not 'IfSingle' in print_dict.keys():
|
||||
print_dict['IfSingle'] = False
|
||||
|
||||
data = minio_client.get_object(print_dict['print_path_list'][0].split("/", 1)[0], print_dict['print_path_list'][0].split("/", 1)[1])
|
||||
# data = s3.get_object(Bucket=print_dict['print_path_list'][0].split("/", 1)[0], Key=print_dict['print_path_list'][0].split("/", 1)[1])['Body']
|
||||
# data = minio_client.get_object(print_dict['print_path_list'][0].split("/", 1)[0], print_dict['print_path_list'][0].split("/", 1)[1])
|
||||
# data_bytes = BytesIO(data.read())
|
||||
# image = Image.open(data_bytes)
|
||||
# image_mode = image.mode
|
||||
|
||||
data_bytes = BytesIO(data.read())
|
||||
image = Image.open(data_bytes)
|
||||
image_mode = image.mode
|
||||
bucket_name = print_dict['print_path_list'][0].split("/", 1)[0]
|
||||
object_name = print_dict['print_path_list'][0].split("/", 1)[1]
|
||||
image = oss_get_image(bucket=bucket_name, object_name=object_name, data_type="cv2")
|
||||
# 判断图片格式,如果是RGBA 则贴在一张纯白图片上 防止透明转黑
|
||||
if image_mode == "RGBA":
|
||||
new_background = Image.new('RGB', image.size, (255, 255, 255))
|
||||
new_background.paste(image, mask=image.split()[3])
|
||||
if image.shape[2] == 4:
|
||||
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGRA2RGBA)
|
||||
image_pil = Image.fromarray(image_rgb)
|
||||
new_background = Image.new('RGB', image_pil.size, (255, 255, 255))
|
||||
new_background.paste(image_pil, mask=image.split()[3])
|
||||
image = new_background
|
||||
print_dict['image'] = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
|
||||
|
||||
@@ -577,21 +579,30 @@ class PrintPainting(object):
|
||||
|
||||
@staticmethod
|
||||
def read_image(image_url):
|
||||
data = minio_client.get_object(image_url.split("/", 1)[0], image_url.split("/", 1)[1])
|
||||
# data = s3.get_object(Bucket=image_url.split("/", 1)[0], Key=image_url.split("/", 1)[1])['Body']
|
||||
|
||||
data_bytes = BytesIO(data.read())
|
||||
image = Image.open(data_bytes)
|
||||
image_mode = image.mode
|
||||
# 判断图片格式,如果是RGBA 则贴在一张纯白图片上 防止透明转黑
|
||||
if image_mode == "RGBA":
|
||||
# new_background = Image.new('RGB', image.size, (255, 255, 255))
|
||||
# new_background.paste(image, mask=image.split()[3])
|
||||
# image = new_background
|
||||
return image, image_mode
|
||||
image = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
|
||||
image = oss_get_image(bucket=image_url.split("/", 1)[0], object_name=image_url.split("/", 1)[1], data_type="cv2")
|
||||
if image.shape[2] == 4:
|
||||
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGRA2RGBA)
|
||||
image = Image.fromarray(image_rgb)
|
||||
image_mode = "RGBA"
|
||||
else:
|
||||
image_mode = "RGB"
|
||||
return image, image_mode
|
||||
|
||||
# data = minio_client.get_object(image_url.split("/", 1)[0], image_url.split("/", 1)[1])
|
||||
# # data = s3.get_object(Bucket=image_url.split("/", 1)[0], Key=image_url.split("/", 1)[1])['Body']
|
||||
#
|
||||
# data_bytes = BytesIO(data.read())
|
||||
# image = Image.open(data_bytes)
|
||||
# image_mode = image.mode
|
||||
# # 判断图片格式,如果是RGBA 则贴在一张纯白图片上 防止透明转黑
|
||||
# if image_mode == "RGBA":
|
||||
# # new_background = Image.new('RGB', image.size, (255, 255, 255))
|
||||
# # new_background.paste(image, mask=image.split()[3])
|
||||
# # image = new_background
|
||||
# return image, image_mode
|
||||
# image = cv2.cvtColor(np.asarray(image), cv2.COLOR_RGB2BGR)
|
||||
# return image, "RGB"
|
||||
|
||||
# @staticmethod
|
||||
# def read_image(image_url):
|
||||
# response = requests.get(image_url)
|
||||
|
||||
@@ -41,7 +41,7 @@ class Split(object):
|
||||
else:
|
||||
back_mask = result['back_mask']
|
||||
|
||||
rgba_image = rgb_to_rgba((result['final_image'].shape[0], result['final_image'].shape[1]), result['final_image'], result['mask'])
|
||||
rgba_image = rgb_to_rgba((result['final_image'].shape[0], result['final_image'].shape[1]), re4sult['final_image'], result['mask'])
|
||||
result_front_image = np.zeros_like(rgba_image)
|
||||
result_front_image[front_mask != 0] = rgba_image[front_mask != 0]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user