|
|
本帖最后由 独孤求败 于 2025-12-6 18:36 编辑
预览图线条全改为黄色,已经改好,主控台编辑的线条粗细问题原来的参数是2 现改为1.5 , 2太粗 1太细,那么就取中间点 1.5
MVE编辑landmarks时,切脸会根据landmarks调整位置,而MVE编辑编辑器修改后landmarks的相对位置可能不是固定的,这可能导致对齐标准不统一。
如是这样,因为MVE编辑landmarks与其它魔改版DF并未开源,请建议他们将landmarks转换回原始图片坐标系,以取得DF统一格式标准
我的软件设计直接又暴力,直接读取原生地标,编辑时回存也是一样原生相对位置,不会因为放大缩小有损耗,若有损耗也很小,约在1像素的小数点六位数,几乎可以忽略
以下是我读取原生DF座标代码,直接打脸说不准确的人
读取DF座标点直接开源,欢迎程序员检视代码
这属于核心代码,我也不装了,大家直接摊牌,别搞的神神秘密的~~
# ----------------------------------------------------------
# DFL 读写类别
# ----------------------------------------------------------
class PrecisionDFLReader:
@staticmethod
def load_dfl_landmarks(image_path):
try:
with open(image_path, "rb") as f: data = f.read()
start_pos = data.find(b'\xff\xef')
if start_pos == -1: return None
chunk_start = start_pos + 2
if chunk_start + 2 > len(data): return None
chunk_size = struct.unpack(">H", data[chunk_start:chunk_start+2])[0] - 2
data_start = chunk_start + 2
pickle_data = data[data_start:data_start+chunk_size]
try: dfl_dict = pickle.loads(pickle_data, encoding='latin1')
except:
try: dfl_dict = pickle.loads(pickle_data, encoding='bytes')
except: return None
if not isinstance(dfl_dict, dict) or 'landmarks' not in dfl_dict: return None
lm = np.array(dfl_dict['landmarks'], dtype=np.float64)
if lm.size == 136: lm = lm.reshape(68, 2)
return lm
except: return None
class PrecisionDFLWriter:
@staticmethod
def save_dfl_landmarks(image_path, landmarks):
try:
with open(image_path, "rb") as f: data = f.read()
start_pos = data.find(b'\xff\xef')
if start_pos == -1: return False
chunk_start = start_pos + 2
chunk_size = struct.unpack(">H", data[chunk_start:chunk_start+2])[0] - 2
data_start = chunk_start + 2
pickle_data = data[data_start:data_start+chunk_size]
try: dfl_dict = pickle.loads(pickle_data, encoding='latin1')
except:
try: dfl_dict = pickle.loads(pickle_data, encoding='bytes')
except: return False
dfl_dict['landmarks'] = landmarks.astype(np.float32).tolist()
new_pickle = pickle.dumps(dfl_dict, protocol=2)
new_data = data[:start_pos] + b'\xff\xef' + struct.pack(">H", len(new_pickle)+2) + new_pickle + data[data_start+chunk_size:]
with open(image_path, "wb") as f: f.write(new_data)
return True
except: return False
或许某些原因DF魔改版要对他的客户交代,说我读取原生DF地标不准?代码在上面全公布了
有些把遮罩改512或模型改动参数之后一定要用指定DF魔改软件,才能读取训练不报错且地标才不会弄乱,有必要这样绑架吗?
DF魔改版有 A B C D E 。。。。等版本,要我去配合他们改写程序,有点不切实际呢!
我写的软体完全按照 DF 原版程序是百分百兼容,最重要的是免费的,要用不用我没关系我无所谓呢!反正又不收你费,不想用直接删除就好了。
我正弄新一代的地标编辑器 V8版本,功能更强大操作更便利,直接点击座标点就对应相对图档的座标点编辑,也可反相操作
侧脸 极限角度 等,抓不住位置时,改由点击参考图座标,就直接对应你的图档座标所在位置。
情景:你的切脸都错乱,连你自己都搞不清楚那些\错乱线条的点是什么跟什么
别紧张,选参考图的点,自动对应出来图档的位置,便于修正。
gemini 对我的代码分析给出了结论:
|
评分
-
查看全部评分
|