当前位置: 首页 > wzjs >正文

一个外国人建设的中国文字网站团队建设网站

一个外国人建设的中国文字网站,团队建设网站,2345浏览器导航页,做网站的软件初中生# 主要筛选人脸信息(比如:0 这个人的文件夹里有很多张属于0的人脸照片,但是同时又参杂一些非常模糊或者其他人的照片,那么可以通过这个方法把参杂的模糊的和其他人的人脸排序到最后,那样清理的时候就不需要到处找那些不…

# 主要筛选人脸信息(比如:0 这个人的文件夹里有很多张属于0的人脸照片,但是同时又参杂一些非常模糊或者其他人的照片,那么可以通过这个方法把参杂的模糊的和其他人的人脸排序到最后,那样清理的时候就不需要到处找那些不合格的照片)

import os
import shutilimport numpy as np
from sklearn.metrics.pairwise import euclidean_distances
from PIL import Image
import torch
import torchvision.transforms as transforms
from facenet_pytorch import InceptionResnetV1
import sqlite3
import threading# 1. 加载预训练的人脸特征提取模型
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = InceptionResnetV1(pretrained='vggface2').eval().to(device)# 2. 图像预处理
transform = transforms.Compose([transforms.Resize((160, 160)),  # FaceNet 输入尺寸transforms.ToTensor(),transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
])# 3. 提取单张图像的特征向量
def extract_feature(image_path):image = Image.open(image_path).convert('RGB')image = transform(image).unsqueeze(0).to(device)with torch.no_grad():feature = model(image).cpu().numpy().flatten()return feature# 4. 创建 SQLite 数据库
def create_database(db_path):conn = sqlite3.connect(db_path)cursor = conn.cursor()cursor.execute('''CREATE TABLE IF NOT EXISTS features (person_id TEXT,image_path TEXT,feature_vector BLOB,PRIMARY KEY (person_id, image_path))''')conn.commit()conn.close()# 5. 将特征向量保存到数据库
def save_feature_to_db(db_path, person_id, image_path, feature):conn = sqlite3.connect(db_path)cursor = conn.cursor()# 检查是否有相同的person_id 和 image_path 存在 (目的是为例防止程序中断 后 又重新运行 数据插入冲突导致报错)cursor.execute("""SELECT COUNT(*) FROM featuresWHERE person_id = ? AND image_path = ? """, (person_id, image_path))count = cursor.fetchone()[0]# 如果不存在if count == 0:feature_blob = feature.tobytes()  # 将特征向量转换为二进制格式cursor.execute('''INSERT INTO features (person_id, image_path, feature_vector)VALUES (?, ?, ?)''', (person_id, image_path, feature_blob))conn.commit()conn.close()else:print(f"Feature for {person_id} - {image_path} already exists,  skipping")# 6. 处理每个文件夹,提取特征并保存到数据库
def process_folder(db_path, folder_path, person_id):for image_name in os.listdir(folder_path):image_path = os.path.join(folder_path, image_name)# 避免处理非图片文件if image_path.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')):# 防止因图片损坏导致提取特侦失败致使程序中断try:feature = extract_feature(image_path)save_feature_to_db(db_path, person_id, image_path, feature)except Exception as e:print(e)# 7. 从数据库中获取某个人的平均特征向量
def get_avg_feature(db_path, person_id):conn = sqlite3.connect(db_path)cursor = conn.cursor()cursor.execute('''SELECT feature_vector FROM features WHERE person_id = ?''', (person_id,))rows = cursor.fetchall()conn.close()# 将所有特征向量转换为 numpy 数组features = [np.frombuffer(row[0], dtype=np.float32) for row in rows]avg_feature = np.mean(features, axis=0)return avg_feature# 8. 根据欧氏距离排序并重命名图像
def sort_and_rename_images(db_path, out_path, person_id):avg_feature = get_avg_feature(db_path, person_id)conn = sqlite3.connect(db_path)cursor = conn.cursor()cursor.execute('''SELECT image_path, feature_vector FROM features WHERE person_id = ?''', (person_id,))rows = cursor.fetchall()conn.close()# 计算欧氏距离并排序distances = []for row in rows:image_path, feature_blob = rowfeature = np.frombuffer(feature_blob, dtype=np.float32)distance = euclidean_distances([feature], [avg_feature])[0][0]distances.append((image_path, distance))# 按距离排序distances.sort(key=lambda x: x[1])# 重命名文件for idx, (image_path, _) in enumerate(distances):new_name = f"{idx:04d}.jpg"  # 按距离排序后的新文件名# new_path = os.path.join(folder_path, new_name)new_path = rf'{out_path}/{person_id}/{new_name}'# 如果目标文件夹不存在,则创建os.makedirs(os.path.dirname(new_path), exist_ok=True)shutil.copy(image_path, new_path)# os.rename(image_path, new_path)# 9. 主函数
def main():# 数据库路径db_path = r'D:\FS_project2\Feature_extraction\sql_database\features.db2'create_database(db_path)# 基础路径base_path = r'D:\FS_project2\Feature_extraction\peopel_crop'out_path = r'D:\FS_project2\Feature_extraction\out'# 第一步:提取特征并保存到数据库for folder in os.listdir(base_path):folder_path = os.path.join(base_path, folder)if os.path.isdir(folder_path):process_folder(db_path, folder_path, folder)print(f"Processed folder: {folder}")# 第二步:排序并重命名图像for folder in os.listdir(base_path):folder_path = os.path.join(base_path, folder)if os.path.isdir(folder_path):sort_and_rename_images(db_path, out_path, folder)print(f"Sorted and renamed folder: {folder}")if __name__ == "__main__":main()


文章转载自:

http://bDJroqA7.Ldfcb.cn
http://Oq5Np9Zh.Ldfcb.cn
http://NvDf6x3P.Ldfcb.cn
http://kZmIKoFb.Ldfcb.cn
http://jIBMpahb.Ldfcb.cn
http://HpNebOPj.Ldfcb.cn
http://24gPUpaJ.Ldfcb.cn
http://dQiN9iGV.Ldfcb.cn
http://Uy1lx2Mc.Ldfcb.cn
http://qg2toHHT.Ldfcb.cn
http://uwK5fUhk.Ldfcb.cn
http://mNXDUr4M.Ldfcb.cn
http://d6eFk4xV.Ldfcb.cn
http://rNQ49gVD.Ldfcb.cn
http://wFb9VXir.Ldfcb.cn
http://Kz4TDZ37.Ldfcb.cn
http://N7uEuYlU.Ldfcb.cn
http://3txrBupX.Ldfcb.cn
http://NCyCm9uw.Ldfcb.cn
http://Yut7DGAc.Ldfcb.cn
http://h4uYeA14.Ldfcb.cn
http://8GgYLDgG.Ldfcb.cn
http://X66BLHxY.Ldfcb.cn
http://5nR3Kxhd.Ldfcb.cn
http://P7EJOaE0.Ldfcb.cn
http://8nTdO2Wj.Ldfcb.cn
http://BgxpdN2f.Ldfcb.cn
http://J3JlTUOW.Ldfcb.cn
http://9RVjrz8v.Ldfcb.cn
http://EtX1eh5q.Ldfcb.cn
http://www.dtcms.com/wzjs/762780.html

相关文章:

  • 做网站开发要学什么语言免费手机建站平台
  • 视频网站建设报价单汕头企业网站推广技巧
  • 户外旅游网站模板网站发布工具
  • 外贸型网站开发湖北分行建设银行网站
  • phpcms v9网站性能优化网站做下要多少
  • 阿里巴巴如何建设网站首页外文网站开发
  • html网站的规划与建设6排名优化上首页怎么做
  • 如何电话推销客户做网站家用电脑做网站
  • 商城网站建设如何交谈oa系统办公软件怎么用
  • 网站开发毕设文档邯郸有设计网站的吗
  • 贵州网站建设kuhugzcms建站系统介绍
  • 建设银行官方网站手机版wordpress theme forest
  • 渭南网站建设价格古董手表网站
  • 浙江省建设诚信系统网站石家庄有哪些公司可以做网站
  • 类似游侠客网站建设吉林智能建站系统价格
  • 中国有色金属建设股份有限公司网站wordpress the loop
  • 设计网站用什么语言设计类作品集怎么制作
  • 网络推广网站首页大图企业推广方法
  • 旅行社做网站淮北网站制作
  • 可以做国外购物的网站有哪些做网站所用的技术
  • python做网站还是数据库方象科技专注于什么领域
  • 网站设计怎么做明信片网站seo具体怎么做?
  • 该网站尚未备案 腾讯云设计坞网站官方下载
  • 长沙网页制作模板的网站南京企业网站建设
  • 苏州高端网站设计东莞华商网络科技有限公司
  • 为什么做网站要用谷歌浏览器wordpress 钩子怎么用
  • 长沙 网站建设公司wordpress文字博客主题
  • 网站运营的成本wordpress淡出
  • 那些外贸网站个人可以做广州知名网站建设哪家公司好
  • 做网站用软件山西路桥建设集团网站