JetSonNano入门和人脸识别

  • Post author:
  • Post category:其他




一、基础入门



jetson_nano



一、入门



1.图片读取

##读取图像显示
img=cv2.imread("./Resoucse/test.png")  ##获取图片对象

cv2.imshow("Output",img)   ##显示图片信息 imshow(标题名,图片对象)

cv2.waitKey(0)             ##设置等待时间 0为无限大,即不中断



2.视频读取

import  cv2 
video_width=640                 
video_height=400
## ↑↑↑设置视频截取图像的大小,即显示大小
video=cv2.VideoCapture("./Resoucse/test.mp4")  ##获取视频对象

while True :          
    success,img=video.read() ##通过循环截取转换为图片对象
    img =cv2.resize(img,(video_width,video_height))  ##调整图片显示的大小
    cv2.imshow("Result",img)   ##显示图像信息
    if cv2.waitKey(2) & 0xff == ord('q') :  ##设置图像延时时间为2毫秒,并设置可中断按键
        break



3.图像处理



(1). 颜色处理
import cv2
import numpy as np

img =cv2.imread("Resoucse/test.png")     ##获取图片对象

imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  ##灰度图像
 
imgBlur=cv2.GaussianBlur(imgGray,(7,7),5)     ##模糊图像
 
imgCannay=cv2.Canny(imgBlur,100,150)          ##凸显图像边缘


kernel=np.ones((5,5),np.uint8)                  
imgDia=cv2.dilate(imgCannay,kernel,iterations=1)  ##边缘膨胀 

imgErode=cv2.erode(imgDia,kernel,iterations=1)    ##边缘侵蚀

cv2.imshow("img",img)

cv2.imshow("imgGray",imgGray)

cv2.imshow("imgBlur",imgBlur)

cv2.imshow("imgCannay",imgCannay)

cv2.imshow("imgDia",imgDia)

cv2.imshow("imgErode",imgErode)

cv2.waitKey(0)


(2). 大小处理
import cv2
import numpy as np

##裁剪图像大小

img =cv2.imread("Resoucse/test.png")               

print(img.shape)                                                  #显示像素、通道数

imgResize=cv2.resize(img,(300,200))                 #像素变化

imgResize2=cv2.resize(img,(0,0),None,0.5,0.5)  ##等比变化


imgCropped=img[100:200,200:300]      ##y值范围:x值范围   裁剪

cv2.imshow("img",img)

cv2.imshow("imgResize",imgResize2)

print(imgResize2.shape)    

cv2.imshow("imgCropped",imgCropped)

cv2.waitKey(0)


(3). 图像绘制
import cv2
import numpy as np

##绘制操作

img=np.zeros((512,512,3),np.uint8)
img[:]=255,255,255
#画圆
cv2.circle(img,(256,256),150,(0,69,255),cv2.FILLED)   # 图形对象:圆点:半径:颜色:边缘线宽度    
#画方形
cv2.rectangle(img,(130,226),(382,286),(255,255,255),cv2.FILLED)  # 图形对象:点1:点2:填充颜色:填充宽度    ※//cv2.FILLED为填充形状
#画线
cv2.line(img,(130,296),(382,296),(255,255,255))     #图形对象:点1:点2:填充颜色
#添加文字
cv2.putText(img,"MUSK 'S  WORK SHOP",(137,262),cv2.FONT_HERSHEY_DUPLEX,0.7,(0,69,255),2) # 图形对象:文字内容:起始点:字体:缩放级别:颜色:线条宽度

cv2.imshow("Image",img)
cv2.waitKey(0)



二、进阶



1.人脸定位-模块化

import cv2

#人脸定位主要方法
def findObject(img, objectCascade ,scaleF=1.1,minN=4):
    imgObject=img.copy()           #复制img对象
    imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #img对象变为灰度
    objects=objectCascade.detectMultiScale(imgGray,scaleF,minN) #从灰度图像中获取人脸对象
    for(x,y,w,h) in objects:
        cv2.rectangle(imgObject,(x,y),(x+w,y+h),(255,0,255),2)  #通过获取的人脸对象的点的坐标进行绘制矩形
    return imgObject,objects

def main():
      img=cv2.imread("../Resoucse/face.png")   #加载图片
      faceCascade=cv2.CascadeClassifier("../Resoucse/haarcascades/haarcascade_frontalface_default.xml") #加载人脸定位数据
      imgObjects,objects =findObject(img,faceCascade) #获取定位后的人脸对象
      cv2.imshow("face",imgObjects)    #展示人脸对象
      cv2.waitKey(0)                   
if __name__ == "__main__":
    main()



版权声明:本文为weixin_44825323原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。