您当前位置:首页>项目技能>技能技巧

人物图片精准对焦眼部区域并实现个性打码?精准度高于95%!看这一篇就够了

发布时间:2025-06-19 阅读量:515 超级管理员

宝子们,是不是经常遇到这种情况:手里有一张人物照片,看着挺好的,但总觉得眼睛部分有点“露馅儿”,想给它打个码,又怕打不好,显得很突兀?别急,今天就来给大家唠唠,怎么精准对焦眼部区域并实现个性打码,让你的照片既保护了隐私,又看起来自然得很!那要如何做实现并不规范尺寸的图片也可以精准识别眼睛位置,并实现...

扫码分享二维码

二维码

详细介绍

宝子们,是不是经常遇到这种情况:手里有一张人物照片,看着挺好的,但总觉得眼睛部分有点“露馅儿”,想给它打个码,又怕打不好,显得很突兀?别急,今天就来给大家唠唠,怎么精准对焦眼部区域并实现个性打码,让你的照片既保护了隐私,又看起来自然得很!

那要如何做实现并不规范尺寸的图片也可以精准识别眼睛位置,并实现涂抹或者自定义其它格式的打码?

第一步、获取一个人脸识别服务的API

在此处演示我们采用腾讯的接口,具体开通人脸识别服务:https://console.cloud.tencent.com/aiface/source

关于API提供的免费额度可以参考:https://cloud.tencent.com/document/product/867/34603

第二步、获取账号的SecretId 和 SecretKey

密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取

第三步、构建程序识别眼睛坐标;

此处支持本地图片和网络图片;如果是本地图片,需要转换为BASE64编码格式,同时base64 编码后大小不可超过5M。

关于接口服务下的人脸识别之五官定位,更多说明可以参考:

https://cloud.tencent.com/document/product/867/45019?share_token=949e1682-a20b-4b9a-ad71-e49d1bc61391&tt_from=copy_link&utm_campaign=client_share&utm_medium=toutiao_android&utm_source=copy_link

PYTHON执行程序为:

# -*- coding: utf-8 -*-

import json
import types
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.iai.v20200303 import iai_client, models
try:
    cred = credential.Credential("AKIDKZfLcfaO2av2vZz", "GI6lTO7XAk9MLH")
    # 使用临时密钥示例
    # cred = credential.Credential("SecretId", "SecretKey", "Token")
    # 实例化一个http选项,可选的,没有特殊需求可以跳过
    httpProfile = HttpProfile()
    httpProfile.endpoint = "iai.tencentcloudapi.com"

    # 实例化一个client选项,可选的,没有特殊需求可以跳过
    clientProfile = ClientProfile()
    clientProfile.httpProfile = httpProfile
    # 实例化要请求产品的client对象,clientProfile是可选的
    client = iai_client.IaiClient(cred, "ap-beijing", clientProfile)

    # 实例化一个请求对象,每个接口都会对应一个request对象
    req = models.AnalyzeFaceRequest()
    params = {
        "Url": "https://www.diebaoyun.com/static/upload/image/20250619/1750299799277636.png"
    }
    req.from_json_string(json.dumps(params))

    # 返回的resp是一个AnalyzeFaceResponse的实例,与请求对象对应
    resp = client.AnalyzeFace(req)
    # 输出json格式的字符串回包
    print(resp.to_json_string())

except TencentCloudSDKException as err:
    print(err)

以上代码执行后返回格式:

{"ImageWidth": 268, "ImageHeight": 140, "FaceShapeSet": [{"FaceProfile": [{"X": 107, "Y": 48}, {"X": 106, "Y": 57}, {"X": 105, "Y": 
66}, {"X": 105, "Y": 75}, {"X": 106, "Y": 84}, {"X": 108, "Y": 93}, {"X": 111, "Y": 101}, {"X": 117, "Y": 108}, {"X": 124, "Y": 114}, {"X": 132, "Y": 118}, {"X": 141, "Y": 119}, {"X": 150, "Y": 118}, {"X": 158, "Y": 115}, {"X": 165, "Y": 111}, {"X": 171, "Y": 104}, {"X": 176, "Y": 97}, {"X": 179, "Y": 89}, {"X": 181, "Y": 80}, {"X": 182, "Y": 71}, {"X": 183, "Y": 63}, {"X": 182, "Y": 54}], "LeftEye": [{"X": 120, "Y": 48}, {"X": 123, "Y": 50}, {"X": 127, "Y": 50}, {"X": 130, "Y": 49}, {"X": 134, "Y": 49}, {"X": 131, "Y": 46}, {"X": 127, "Y": 46}, {"X": 123, "Y": 46}], "RightEye": [{"X": 167, "Y": 52}, {"X": 163, "Y": 53}, {"X": 160, "Y": 53}, {"X": 156, "Y": 52}, {"X": 153, "Y": 51}, {"X": 156, "Y": 49}, {"X": 160, "Y": 49}, {"X": 164, "Y": 50}], "LeftEyeBrow": [{"X": 113, "Y": 39}, {"X": 119, "Y": 37}, {"X": 126, "Y": 37}, {"X": 133, "Y": 37}, {"X": 139, "Y": 37}, {"X": 134, "Y": 32}, {"X": 126, "Y": 31}, {"X": 118, "Y": 33}], "RightEyeBrow": [{"X": 176, "Y": 44}, {"X": 170, "Y": 41}, {"X": 164, "Y": 40}, {"X": 158, "Y": 39}, {"X": 151, "Y": 38}, {"X": 157, "Y": 34}, {"X": 165, "Y": 34}, {"X": 172, "Y": 37}], "Mouth": [{"X": 130, "Y": 91}, {"X": 134, "Y": 94}, {"X": 138, "Y": 96}, {"X": 142, "Y": 96}, {"X": 148, "Y": 96}, {"X": 153, "Y": 95}, {"X": 158, "Y": 92}, {"X": 152, "Y": 89}, {"X": 147, "Y": 87}, {"X": 143, "Y": 88}, {"X": 139, "Y": 87}, {"X": 134, "Y": 88}, {"X": 134, "Y": 90}, {"X": 138, "Y": 91}, {"X": 143, "Y": 91}, 
{"X": 148, "Y": 91}, {"X": 153, "Y": 91}, {"X": 153, "Y": 91}, {"X": 148, "Y": 91}, {"X": 142, "Y": 91}, {"X": 138, "Y": 90}, {"X": 
134, "Y": 90}], "Nose": [{"X": 144, "Y": 70}, {"X": 144, "Y": 50}, {"X": 141, "Y": 55}, {"X": 139, "Y": 61}, {"X": 136, "Y": 66}, {"X": 132, "Y": 71}, {"X": 138, "Y": 74}, {"X": 143, "Y": 76}, {"X": 148, "Y": 75}, {"X": 154, "Y": 72}, {"X": 151, "Y": 66}, {"X": 149, "Y": 61}, {"X": 147, "Y": 56}], "LeftPupil": [{"X": 126, "Y": 47}], "RightPupil": [{"X": 161, "Y": 50}]}], "FaceModelVersion": "3.0", "RequestId": "cabff882-4f51-48d9-adf0-8d2351d1ae8e"}

第四步、根据返回的五官坐标实施遮挡或者其它行为操作;

以下以遮挡眼睛为例实施代码:

from PIL import Image, ImageDraw

# 定义图片路径
image_path = 'C:\\Users\\Administrator\\Desktop\\456.png'

# 定义坐标列表
coordinates = [
    (142, 195), (150, 200), (159, 202), (169, 201),
    (177, 197), (171, 189), (161, 186), (150, 188),
    (268, 195), (260, 200), (251, 202), (241, 201),
    (233, 198), (239, 190), (250, 187), (260, 189)
]

# 打开图片
image = Image.open(image_path)

# 创建绘图对象
draw = ImageDraw.Draw(image)

# 定义圆圈的半径和颜色
radius = 5  # 像素为10,半径为5
color = (255, 0, 0)  # 红色

# 在每个坐标处画圆圈
for x, y in coordinates:
    draw.ellipse((x - radius, y - radius, x + radius, y + radius), outline=color, width=1)

# 保存标注好的图片
output_path = 'C:\\Users\\Administrator\\Desktop\\456_annotated.png'
image.save(output_path)

print(f'标注好的图片已保存至 {output_path}')


第五步、最终实施看看效果

上一篇 影刀删除应用不干净?时间久了,大量垃圾应用文件占空间?用它!够了!
下一篇 如何获取123网盘请求token参数也就是Authorization对应参数值?

内容版权声明

Copyright Notice

内容链接: https://www.diezanrpa.com/jinengjiqiao/1056.html
内容标题: 人物图片精准对焦眼部区域并实现个性打码?精准度高于95%!看这一篇就够了

当前文章由【付涛】本人原创开发与文案内容写作,内容版权归当前平台所有,如需转载,请务必注明来源及链接,谢谢合作!

本文最后更新发布于【2025-06-19】,某些文章具有时效性,若有错误或已失效,请联系客服

争议处理:针对本站内容若有异义,亦可直接与【法律顾问:易兴俊,律师联系电话:13825799821】直接联系沟通

GEO