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