# frozen_string_literal: true # Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. module TencentCloud module Facefusion module V20220927 # DescribeMaterialList请求参数结构体 class DescribeMaterialListRequest < TencentCloud::Common::AbstractModel # @param ActivityId: 活动Id # @type ActivityId: String # @param MaterialId: 素材Id # @type MaterialId: String # @param Limit: 每次拉取条数 # @type Limit: Integer # @param Offset: 偏移量 # @type Offset: Integer attr_accessor :ActivityId, :MaterialId, :Limit, :Offset def initialize(activityid=nil, materialid=nil, limit=nil, offset=nil) @ActivityId = activityid @MaterialId = materialid @Limit = limit @Offset = offset end def deserialize(params) @ActivityId = params['ActivityId'] @MaterialId = params['MaterialId'] @Limit = params['Limit'] @Offset = params['Offset'] end end # DescribeMaterialList返回参数结构体 class DescribeMaterialListResponse < TencentCloud::Common::AbstractModel # @param MaterialInfos: 素材列表数据 # @type MaterialInfos: Array # @param Count: 素材条数 # @type Count: Integer # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 # @type RequestId: String attr_accessor :MaterialInfos, :Count, :RequestId def initialize(materialinfos=nil, count=nil, requestid=nil) @MaterialInfos = materialinfos @Count = count @RequestId = requestid end def deserialize(params) unless params['MaterialInfos'].nil? @MaterialInfos = [] params['MaterialInfos'].each do |i| publicmaterialinfos_tmp = PublicMaterialInfos.new publicmaterialinfos_tmp.deserialize(i) @MaterialInfos << publicmaterialinfos_tmp end end @Count = params['Count'] @RequestId = params['RequestId'] end end # 人脸信息 class FaceInfo < TencentCloud::Common::AbstractModel # @param X: 人脸框的横坐标 # @type X: Integer # @param Y: 人脸框的纵坐标 # @type Y: Integer # @param Width: 人脸框的宽度 # @type Width: Integer # @param Height: 人脸框的高度 # @type Height: Integer attr_accessor :X, :Y, :Width, :Height def initialize(x=nil, y=nil, width=nil, height=nil) @X = x @Y = y @Width = width @Height = height end def deserialize(params) @X = params['X'] @Y = params['Y'] @Width = params['Width'] @Height = params['Height'] end end # 人脸框信息 class FaceRect < TencentCloud::Common::AbstractModel # @param X: 人脸框左上角横坐标。 # @type X: Integer # @param Y: 人脸框左上角纵坐标。 # @type Y: Integer # @param Width: 人脸框宽度。 # @type Width: Integer # @param Height: 人脸框高度。 # @type Height: Integer attr_accessor :X, :Y, :Width, :Height def initialize(x=nil, y=nil, width=nil, height=nil) @X = x @Y = y @Width = width @Height = height end def deserialize(params) @X = params['X'] @Y = params['Y'] @Width = params['Width'] @Height = params['Height'] end end # FuseFace请求参数结构体 class FuseFaceRequest < TencentCloud::Common::AbstractModel # @param ProjectId: 活动 ID,请在人脸融合控制台查看。 # @type ProjectId: String # @param ModelId: 素材 ID,请在人脸融合控制台查看。 # @type ModelId: String # @param RspImgType: 返回图像方式(url 或 base64) ,二选一。url有效期为7天。 # @type RspImgType: String # @param MergeInfos: 用户人脸图片、素材模板图的人脸位置信息。不能超过6个。 # @type MergeInfos: Array # @param FuseProfileDegree: 脸型融合比例,数值越高,融合后的脸型越像素材人物。取值范围[0,100] # 若此参数不填写,则使用人脸融合控制台中脸型参数数值。(换脸版算法暂不支持此参数调整) # @type FuseProfileDegree: Integer # @param FuseFaceDegree: 五官融合比例,数值越高,融合后的五官越像素材人物。取值范围[0,100] # 若此参数不填写,则使用人脸融合控制台中五官参数数值。(换脸版算法暂不支持此参数调整) # @type FuseFaceDegree: Integer # @param LogoAdd: 为融合结果图添加合成标识的开关,默认为1。 # 1:添加标识。 # 0:不添加标识。 # 其他数值:默认按1处理。 # 建议您使用显著标识来提示结果图使用了人脸融合技术,是AI合成的图片。 # @type LogoAdd: Integer # @param LogoParam: 标识内容设置。 # 默认在融合结果图右下角添加“本图片为AI合成图片”字样,您可根据自身需要替换为其他的Logo图片。 # @type LogoParam: :class:`Tencentcloud::Facefusion.v20220927.models.LogoParam` # @param FuseParam: 融合参数。 # @type FuseParam: :class:`Tencentcloud::Facefusion.v20220927.models.FuseParam` attr_accessor :ProjectId, :ModelId, :RspImgType, :MergeInfos, :FuseProfileDegree, :FuseFaceDegree, :LogoAdd, :LogoParam, :FuseParam def initialize(projectid=nil, modelid=nil, rspimgtype=nil, mergeinfos=nil, fuseprofiledegree=nil, fusefacedegree=nil, logoadd=nil, logoparam=nil, fuseparam=nil) @ProjectId = projectid @ModelId = modelid @RspImgType = rspimgtype @MergeInfos = mergeinfos @FuseProfileDegree = fuseprofiledegree @FuseFaceDegree = fusefacedegree @LogoAdd = logoadd @LogoParam = logoparam @FuseParam = fuseparam end def deserialize(params) @ProjectId = params['ProjectId'] @ModelId = params['ModelId'] @RspImgType = params['RspImgType'] unless params['MergeInfos'].nil? @MergeInfos = [] params['MergeInfos'].each do |i| mergeinfo_tmp = MergeInfo.new mergeinfo_tmp.deserialize(i) @MergeInfos << mergeinfo_tmp end end @FuseProfileDegree = params['FuseProfileDegree'] @FuseFaceDegree = params['FuseFaceDegree'] @LogoAdd = params['LogoAdd'] unless params['LogoParam'].nil? @LogoParam = LogoParam.new @LogoParam.deserialize(params['LogoParam']) end unless params['FuseParam'].nil? @FuseParam = FuseParam.new @FuseParam.deserialize(params['FuseParam']) end end end # FuseFace返回参数结构体 class FuseFaceResponse < TencentCloud::Common::AbstractModel # @param FusedImage: RspImgType 为 url 时,返回结果的 url(有效期7天), RspImgType 为 base64 时返回 base64 数据。 # @type FusedImage: String # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 # @type RequestId: String attr_accessor :FusedImage, :RequestId def initialize(fusedimage=nil, requestid=nil) @FusedImage = fusedimage @RequestId = requestid end def deserialize(params) @FusedImage = params['FusedImage'] @RequestId = params['RequestId'] end end # FuseFaceUltra请求参数结构体 class FuseFaceUltraRequest < TencentCloud::Common::AbstractModel # @param RspImgType: 返回融合结果图片方式(url 或 base64) ,二选一。url有效期为1天。 # @type RspImgType: String # @param MergeInfos: 用户人脸图片、素材模板图的人脸位置信息。主要用于素材模版中人脸以及用作融合的用户人脸相关信息,两种人脸都需要提供人脸图片,可选择提供人脸框位置,具体见MergeInfo说明 # 目前最多支持融合模板图片中的6张人脸。 # @type MergeInfos: Array # @param ModelUrl: 素材模版图片的url地址。 # ●base64 和 url 必须提供一个,如果都提供以 url 为准。 # ●素材图片限制:图片中面部尺寸大于34 * 34;图片尺寸大于64 * 64,小于8000 * 8000(单边限制)。图片url或者图片 base64 数据,base64 编码后大小不可超过10M(图片编码之后可能会大30%左右,建议合理控制图片大小) # ●图片格式:支持jpg或png # @type ModelUrl: String # @param ModelImage: 素材模版图片base64数据。 # ●base64 和 url 必须提供一个,如果都提供以 url 为准。 # ●素材图片限制:图片中面部尺寸大于34 * 34;图片尺寸大于64 * 64,小于8000*8000(单边限制)。图片url或者图片 base64 数据,base64 编码后大小不可超过10M(图片编码之后可能会大30%左右,建议合理控制图片大小) # ●支持图片格式:支持jpg或png # @type ModelImage: String # @param FusionUltraParam: 图片人脸融合(专业版)效果参数。可用于设置拉脸、人脸增强、磨皮、牙齿增强、妆容迁移等融合效果参数,生成理想的融合效果。不传默认使用接口推荐值。具体见FusionUltraParam说明 # @type FusionUltraParam: :class:`Tencentcloud::Facefusion.v20220927.models.FusionUltraParam` # @param LogoAdd: 为融合结果图添加合成标识的开关,默认为1。 # 1:添加标识。 # 0:不添加标识。 # 其他数值:默认按1处理。 # 建议您使用显著标识来提示结果图使用了人脸融合技术,是AI合成的图片。 # @type LogoAdd: Integer # @param LogoParam: 标识内容设置。 # 默认在融合结果图右下角添加“本图片为AI合成图片”字样,您可根据自身需要替换为其他的Logo图片。 # @type LogoParam: :class:`Tencentcloud::Facefusion.v20220927.models.LogoParam` # @param SwapModelType: 融合模型类型参数:默认为1。 # 图片人脸融合(专业版)针对不同场景,提供多种模型供选择。如您的产品是泛娱乐场景,推荐使用1;如您主要用于影像场景,推荐使用4、5。其他模型类型也可以结合您的产品使用场景进行选择,也许会有意想不到的效果 # 1:默认泛娱乐场景,画面偏锐。 # 2:影视级场景,画面偏自然。 # 3:影视级场景,高分辨率,画面偏自然。 # 4:影视级场景,高分辦率,高人脸相似度,画面偏自然,可用于证件照等场景。 # 5:影视级场景,高分辨率,对闭眼和遮挡更友好。 # @type SwapModelType: Integer attr_accessor :RspImgType, :MergeInfos, :ModelUrl, :ModelImage, :FusionUltraParam, :LogoAdd, :LogoParam, :SwapModelType def initialize(rspimgtype=nil, mergeinfos=nil, modelurl=nil, modelimage=nil, fusionultraparam=nil, logoadd=nil, logoparam=nil, swapmodeltype=nil) @RspImgType = rspimgtype @MergeInfos = mergeinfos @ModelUrl = modelurl @ModelImage = modelimage @FusionUltraParam = fusionultraparam @LogoAdd = logoadd @LogoParam = logoparam @SwapModelType = swapmodeltype end def deserialize(params) @RspImgType = params['RspImgType'] unless params['MergeInfos'].nil? @MergeInfos = [] params['MergeInfos'].each do |i| mergeinfo_tmp = MergeInfo.new mergeinfo_tmp.deserialize(i) @MergeInfos << mergeinfo_tmp end end @ModelUrl = params['ModelUrl'] @ModelImage = params['ModelImage'] unless params['FusionUltraParam'].nil? @FusionUltraParam = FusionUltraParam.new @FusionUltraParam.deserialize(params['FusionUltraParam']) end @LogoAdd = params['LogoAdd'] unless params['LogoParam'].nil? @LogoParam = LogoParam.new @LogoParam.deserialize(params['LogoParam']) end @SwapModelType = params['SwapModelType'] end end # FuseFaceUltra返回参数结构体 class FuseFaceUltraResponse < TencentCloud::Common::AbstractModel # @param FusedImage: RspImgType 为 url 时,返回结果的 url, RspImgType 为 base64 时返回 base64 数据。url有效期为1天。 # @type FusedImage: String # @param RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 # @type RequestId: String attr_accessor :FusedImage, :RequestId def initialize(fusedimage=nil, requestid=nil) @FusedImage = fusedimage @RequestId = requestid end def deserialize(params) @FusedImage = params['FusedImage'] @RequestId = params['RequestId'] end end # 融合参数 class FuseParam < TencentCloud::Common::AbstractModel # @param ImageCodecParam: 图片编码参数 # @type ImageCodecParam: :class:`Tencentcloud::Facefusion.v20220927.models.ImageCodecParam` attr_accessor :ImageCodecParam def initialize(imagecodecparam=nil) @ImageCodecParam = imagecodecparam end def deserialize(params) unless params['ImageCodecParam'].nil? @ImageCodecParam = ImageCodecParam.new @ImageCodecParam.deserialize(params['ImageCodecParam']) end end end # 高精度融合参数 class FusionUltraParam < TencentCloud::Common::AbstractModel # @param WarpRadio: 拉脸强度。主要用于调整生成结果人脸脸型更像素材模板还是用户人脸。取值越大越像用户人脸。 # 取值范围:0-1之间。默认取值0.7。 # 该参数仅对SwapModelType(模型类型)取值1-5生效 # @type WarpRadio: Float # @param EnhanceRadio: 人脸增强强度。对整个人脸进行增强,增加清晰度,改善质量。当生成的人脸不够清晰,质感不够好的时候可以设置。取值越大增强强度越大。 # 取值范围:0-1之间。默认取值1。 # 该参数仅对SwapModelType(模型类型)取值1-5生效 # @type EnhanceRadio: Float # @param MpRadio: 磨皮强度。当生成脸的图像面部显脏时,可进行设置。 # 取值范围:0-1之间。默认取值1。 # 该参数仅对SwapModelType(模型类型)取值1-5生效 # @type MpRadio: Float # @param BlurRadio: 人脸模糊开关(暂不支持) # 当生成人脸比较清晰时,将人脸模糊到接近模板的清晰度的程度 # 该参数仅对SwapModelType(模型类型)取值1-5生效 # @type BlurRadio: Float # @param TeethEnhanceRadio: 牙齿增强开关,默认取值为1 # 牙齿增强,修复牙齿。当生成牙齿不好(如牙齿裂开)可以打开此开关 # 0:牙齿增强关闭 # 1:牙齿增强打开 # 该参数仅对SwapModelType(模型类型)取值1-5生效 # @type TeethEnhanceRadio: Float # @param MakeupTransferRadio: 妆容迁移开关,默认取值为0。 # 将素材模板的妆容迁移到融合结果上。即:如果希望妆容效果与模板图保持一致,可以打开此开关。 # 0:妆容迁移关闭 # 1:妆容迁移打开 # 该参数仅对SwapModelType(模型类型)取值1-5生效 # @type MakeupTransferRadio: Float attr_accessor :WarpRadio, :EnhanceRadio, :MpRadio, :BlurRadio, :TeethEnhanceRadio, :MakeupTransferRadio def initialize(warpradio=nil, enhanceradio=nil, mpradio=nil, blurradio=nil, teethenhanceradio=nil, makeuptransferradio=nil) @WarpRadio = warpradio @EnhanceRadio = enhanceradio @MpRadio = mpradio @BlurRadio = blurradio @TeethEnhanceRadio = teethenhanceradio @MakeupTransferRadio = makeuptransferradio end def deserialize(params) @WarpRadio = params['WarpRadio'] @EnhanceRadio = params['EnhanceRadio'] @MpRadio = params['MpRadio'] @BlurRadio = params['BlurRadio'] @TeethEnhanceRadio = params['TeethEnhanceRadio'] @MakeupTransferRadio = params['MakeupTransferRadio'] end end # 图片编码参数 class ImageCodecParam < TencentCloud::Common::AbstractModel # @param MetaData: 元数据是描述媒体文件的附加信息。通过添加自定义的元数据,可以将一些附加信息嵌入到文件中。这些信息可以用于版权、描述、标识等目的,并在后续的媒体处理或管理过程中使用。 # 个数不能大于1。 # @type MetaData: Array attr_accessor :MetaData def initialize(metadata=nil) @MetaData = metadata end def deserialize(params) unless params['MetaData'].nil? @MetaData = [] params['MetaData'].each do |i| metadata_tmp = MetaData.new metadata_tmp.deserialize(i) @MetaData << metadata_tmp end end end end # logo参数 class LogoParam < TencentCloud::Common::AbstractModel # @param LogoRect: 标识图片位于融合结果图中的坐标,将按照坐标对标识图片进行位置和大小的拉伸匹配。 # Width、Height <= 2160。 # @type LogoRect: :class:`Tencentcloud::Facefusion.v20220927.models.FaceRect` # @param LogoUrl: 标识图片Url地址 # ●base64 和 url 必须提供一个,如果都提供以 url 为准。 # ●支持图片格式:支持jpg或png # 专业版:base64 编码后大小不超过10M。 # 非专业版:base64 编码后大小不超过5M。 # @type LogoUrl: String # @param LogoImage: 输入图片base64。 # ●base64 和 url 必须提供一个,如果都提供以 url 为准。 # ●支持图片格式:支持jpg或png # 专业版:base64 编码后大小不超过10M。 # 非专业版:base64 编码后大小不超过5M。 # @type LogoImage: String attr_accessor :LogoRect, :LogoUrl, :LogoImage def initialize(logorect=nil, logourl=nil, logoimage=nil) @LogoRect = logorect @LogoUrl = logourl @LogoImage = logoimage end def deserialize(params) unless params['LogoRect'].nil? @LogoRect = FaceRect.new @LogoRect.deserialize(params['LogoRect']) end @LogoUrl = params['LogoUrl'] @LogoImage = params['LogoImage'] end end # 人脸信息 class MaterialFaces < TencentCloud::Common::AbstractModel # @param FaceId: 人脸序号 # @type FaceId: String # @param FaceInfo: 人脸框信息 # @type FaceInfo: :class:`Tencentcloud::Facefusion.v20220927.models.FaceInfo` attr_accessor :FaceId, :FaceInfo def initialize(faceid=nil, faceinfo=nil) @FaceId = faceid @FaceInfo = faceinfo end def deserialize(params) @FaceId = params['FaceId'] unless params['FaceInfo'].nil? @FaceInfo = FaceInfo.new @FaceInfo.deserialize(params['FaceInfo']) end end end # 人脸图片和待被融合的素材模板图的人脸位置信息。 class MergeInfo < TencentCloud::Common::AbstractModel # @param Image: 输入图片base64。 # ●base64 和 url 必须提供一个,如果都提供以 url 为准。 # ●素材图片限制:图片中面部尺寸大于34 * 34;图片尺寸大于64 * 64。(图片编码之后可能会大30%左右,建议合理控制图片大小)。 # ●支持图片格式:支持jpg或png # @type Image: String # @param Url: 输入图片url。 # ●base64 和 url 必须提供一个,如果都提供以 url 为准。 # ●素材图片限制:图片中面部尺寸大于34 * 34;图片尺寸大于64 * 64。(图片编码之后可能会大30%左右,建议合理控制图片大小)。 # ●支持图片格式:支持jpg或png # @type Url: String # @param InputImageFaceRect: 上传的图片人脸位置信息(人脸框) # Width、Height >= 30。 # @type InputImageFaceRect: :class:`Tencentcloud::Facefusion.v20220927.models.FaceRect` # @param TemplateFaceID: 素材人脸ID,不填默认取最大人脸。 # @type TemplateFaceID: String # @param TemplateFaceRect: 模板中人脸位置信息(人脸框),不填默认取最大人脸。此字段仅适用于图片融合自定义模板素材场景。 # Width、Height >= 30。 # @type TemplateFaceRect: :class:`Tencentcloud::Facefusion.v20220927.models.FaceRect` attr_accessor :Image, :Url, :InputImageFaceRect, :TemplateFaceID, :TemplateFaceRect def initialize(image=nil, url=nil, inputimagefacerect=nil, templatefaceid=nil, templatefacerect=nil) @Image = image @Url = url @InputImageFaceRect = inputimagefacerect @TemplateFaceID = templatefaceid @TemplateFaceRect = templatefacerect end def deserialize(params) @Image = params['Image'] @Url = params['Url'] unless params['InputImageFaceRect'].nil? @InputImageFaceRect = FaceRect.new @InputImageFaceRect.deserialize(params['InputImageFaceRect']) end @TemplateFaceID = params['TemplateFaceID'] unless params['TemplateFaceRect'].nil? @TemplateFaceRect = FaceRect.new @TemplateFaceRect.deserialize(params['TemplateFaceRect']) end end end # MetaData数据结构,Key/Value格式 class MetaData < TencentCloud::Common::AbstractModel # @param MetaKey: MetaData的Key,字符长度不能超过32 # @type MetaKey: String # @param MetaValue: MetaData的Value,字符长度不能超过256 # @type MetaValue: String attr_accessor :MetaKey, :MetaValue def initialize(metakey=nil, metavalue=nil) @MetaKey = metakey @MetaValue = metavalue end def deserialize(params) @MetaKey = params['MetaKey'] @MetaValue = params['MetaValue'] end end # 素材信息 class PublicMaterialInfos < TencentCloud::Common::AbstractModel # @param MaterialId: 素材Id # @type MaterialId: String # @param MaterialStatus: 素材状态 # 字段取值: # 0 审核中 # 1 人工审核通过 # 2 人工审核失败 # 3 申诉中 # 11 申诉成功 # 12 申诉失败 # 21 机器审核通过 # 22 机器审核失败 # 31 视频素材预处理成功,素材可用 # 32 视频素材预处理失败 # 33 角色不在视频中 # @type MaterialStatus: Integer # @param CreateTime: 创建时间 # @type CreateTime: String # @param UpdateTime: 修改时间 # @type UpdateTime: String # @param MaterialFaceList: 人脸信息 # @type MaterialFaceList: Array # @param MaterialName: 素材名 # @type MaterialName: String # @param AuditResult: 审核原因 # @type AuditResult: String attr_accessor :MaterialId, :MaterialStatus, :CreateTime, :UpdateTime, :MaterialFaceList, :MaterialName, :AuditResult def initialize(materialid=nil, materialstatus=nil, createtime=nil, updatetime=nil, materialfacelist=nil, materialname=nil, auditresult=nil) @MaterialId = materialid @MaterialStatus = materialstatus @CreateTime = createtime @UpdateTime = updatetime @MaterialFaceList = materialfacelist @MaterialName = materialname @AuditResult = auditresult end def deserialize(params) @MaterialId = params['MaterialId'] @MaterialStatus = params['MaterialStatus'] @CreateTime = params['CreateTime'] @UpdateTime = params['UpdateTime'] unless params['MaterialFaceList'].nil? @MaterialFaceList = [] params['MaterialFaceList'].each do |i| materialfaces_tmp = MaterialFaces.new materialfaces_tmp.deserialize(i) @MaterialFaceList << materialfaces_tmp end end @MaterialName = params['MaterialName'] @AuditResult = params['AuditResult'] end end end end end