IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV的简单应用---手动提取人脸特征点 -> 正文阅读

[人工智能]OpenCV的简单应用---手动提取人脸特征点

  • 简述:
    基于OpenCV中的基本方法,进行人脸区域的矫正切割,采用了68个定位点中的左眼,右眼,嘴巴中心这三个定位点进行提取,使用输入,输出图像构成的三组点对,利用仿射变换,实现最终图像的输出。
import cv2
import glob
import os
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['simhei'] # 添加中文字体为简黑
plt.rcParams['axes.unicode_minus'] =False

point_in = list()
#导入照片文件列表
def load_image(path_in):
    type_list = ['*.png','*.jpg','*.jpeg']
    img_list = list()
    for i in type_list:img_list+=glob.glob(path_in+i)
    return img_list

#点击事件的回调函数
def on_EVENT_LBUTTONDOWN(event,x,y,flags,param):
    global point_in
    imgIn0= param
    a = len(point_in)
    if a<3:
        if event == cv2.EVENT_LBUTTONDOWN:
            point_in.append([x,y])
            cv2.circle(imgIn0,(x,y),3, (255, 0, 0), thickness = -1) #画圆半径为3,并填充
            cv2.putText(imgIn0, str(a + 1), (x, y), cv2.FONT_HERSHEY_PLAIN,
                        1.0, (0, 255, 0), thickness=1) #加入文字,位置,字体,尺度因子,颜色,粗细
            cv2.imshow("window 2", imgIn0)

def show_image(img_list,path_out,point_in):
    for i,img_path in enumerate(img_list):
        point_in.clear()
        # A.以灰度模式读取原始图像、可视化
        # cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。
        # cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。
        # cv2.IMREAD_UNCHANGED:包括alpha,可以直接写-1

        imgIn = cv2.imread(img_path,1)
        imgIn0= imgIn.copy() #形成image对象

        rows, cols, channels = imgIn0.shape #d读取输入图像行数,列数,颜色通道
        print('第%d幅图:'%i,rows, cols, channels)
        cv2.namedWindow("window 1", flags=cv2.WINDOW_NORMAL | cv2.WINDOW_FREERATIO)#窗口命名,并大小可变
        cv2.imshow("window 1", imgIn)

        cv2.namedWindow("window 2", flags=cv2.WINDOW_NORMAL | cv2.WINDOW_FREERATIO)
        cv2.imshow("window 2", imgIn0)
        cv2.setMouseCallback("window 2", on_EVENT_LBUTTONDOWN,imgIn0)#手动点击进行特征点的提取


        cv2.waitKey(0)  #等待键盘点击事件来结束阻塞
        print(point_in)

        point_out = np.float32([[25, 30], [75, 30], [50, 75]])#左眼,右眼,嘴巴中心的特征点的坐标
        # 估计由输出坐标到输入坐标的放射变换模型
        M = cv2.getAffineTransform(np.float32(point_in), point_out)
        print(M)
        rows2,cols2 = 100,100 #指定输出图像的大小
        
        #利用仿射变换模型,将输入图像仿射变换,产生输出图像
        imgOut = cv2.warpAffine(imgIn, M, (cols2, rows2))
        b, g, r = cv2.split(imgOut) #opencv 颜色读取方式为bgr
        img2 = cv2.merge([r, g, b])  #plt则是rgb
        plt.imshow(img2)
        plt.show()

        image_name = os.path.splitext(os.path.split(img_path)[1])[0] #获取文件名
        cv2.imwrite(path_out+image_name+'_out.jpg',imgOut)   #保存矫正后的人脸图片

        print('*'*20 )
        cv2.destroyAllWindows() #销毁所有窗口

if __name__ == '__main__':
    path_in = r'imageIN/'
    path_out = r'imageOUT/'

    img_list=load_image(path_in)
    show_image(img_list,path_out,point_in)

输入图像
在这里插入图片描述
输出图像:
在这里插入图片描述
代码执行结果

第0幅图: 373 360 3
[[358, 25], [170, 170], [215, 221]]
[[-3.83230932e-01 -1.52051139e-01  1.65997952e+02]
 [ 4.04952523e-01  5.25041892e-01 -1.28099050e+02]]
********************
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:10:08  更:2021-09-26 10:10:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:30:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码