一、基础入门
   
    
    
    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 版权协议,转载请附上原文出处链接和本声明。
