Python-OpenCV学习
- 读取图片 灰度化 保存图片
import cv2 as cv img=cv.imread('lena.png')#不能有中文 gray_img=cv.cvtColor(img,code=cv.COLOR_BGR2GRAY)#转为灰度图 cv.imshow('input image',img)#input image是创建的窗口 cv.imshow('gray image',gray_img)#input image是创建的窗口 cv.waitKey(0)#无限等待 随便按下一个键 就可以退出 cv.destroyAllWindows()#使用完内存后释放 cv.imwrite('gray_image.png',gray_img)
- 修改图像尺寸
import cv2 as cv img=cv.imread('lena.png')#不能有中文 #gray_img=cv.cvtColor(img,code=cv.COLOR_BGR2GRAY)#转为灰度图像 #修改图像的尺寸 resize_img=cv.resize(img,dsize=(200,200)) #resize_img=cv.resize(img,0.5) cv.imshow('input image',img)#input image是创建的窗口 print(img.shape) cv.imshow('resize image',resize_img)#input image是创建的窗口 print(resize_img.shape) #只有输入q的时候,退出 while True: if ord('q')==cv.waitKey(0): #ord返回的是二进制 break #cv.waitKey(0)#无限等待 随便按下一个键 就可以退出 cv.destroyAllWindows()#使用完内存后释放 #cv.imwrite('gray_image.png',gray_img)
- 在图像上绘制矩形和圆
import cv2 as cv img=cv.imread('lena.png')#不能有中文 #cv.imshow('input image',img)#input image是创建的窗口 #画矩形 x,y,w,h=180,180,50,50 cv.rectangle(img,(x,y,x+w,y+h),color=(0,255,0),thickness=2) #画圆 #center原点的坐标 radius为半径 cv.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(0,0,255),thickness=2) #python中整除是// cv.imshow('output image',img) cv.waitKey(0)#无限等待 随便按下一个键 就可以退出 cv.destroyAllWindows()#使用完内存后释放
- 人脸检测
- 在D:\python\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml
- 有不同的检测器
import cv2 as cv def fac_detect_demo(): gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY) #加载特征数据 fac_detector=cv.CascadeClassifier('D:\python\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml') #返回脸部信息 face=fac_detector.detectMultiScale(gray) #在脸部信息上面画矩形 标注出来 for x,y,w,h in face: cv.rectangle(img,(x,y),(x+w,y+h),color=(255,255,0),thickness=2) cv.imshow('result',img) img=cv.imread('lena.png')#不能有中文 #cv.imshow('input image',img)#input image是创建的窗口 #调用方法 fac_detect_demo() cv.waitKey(0)#无限等待 随便按下一个键 就可以退出 cv.destroyAllWindows()#使用完内存后释放
- 检测多张人脸 并画矩形和圆
import cv2 as cv def fac_detect_demo(): gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY) #加载特征数据 fac_detector=cv.CascadeClassifier('D:\python\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml') #返回脸部信息 face=fac_detector.detectMultiScale(gray) #在脸部信息上面画矩形 标注出来 for x,y,w,h in face: cv.rectangle(img,(x,y),(x+w,y+h),color=(255,255,0),thickness=2) cv.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(124,156,55),thickness=2) cv.imshow('result',img) img=cv.imread('face.jpeg')#不能有中文 #cv.imshow('input image',img)#input image是创建的窗口 #调用方法 fac_detect_demo() cv.waitKey(0)#无限等待 随便按下一个键 就可以退出 cv.destroyAllWindows()#使用完内存后释放
-
scaleFactor=1.1,minNeighbors=3,minSize=(60,60) 参数调整
import cv2 as cv def fac_detect_demo(): gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY) #加载特征数据 fac_detector=cv.CascadeClassifier('D:\python\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml') #返回脸部信息 face=fac_detector.detectMultiScale(gray,scaleFactor=1.1,minNeighbors=3,minSize=(60,60)) #scaleFactor为检测的范围缩放比例 #minNeighbors检测的最小次数 #最小的检测尺寸为(60,60) #maxSize为最大的检测尺寸 #在脸部信息上面画矩形 标注出来 for x,y,w,h in face: cv.rectangle(img,(x,y),(x+w,y+h),color=(255,255,0),thickness=2) cv.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(124,156,55),thickness=2) cv.imshow('result',img) img=cv.imread('face.jpeg')#不能有中文 #cv.imshow('input image',img)#input image是创建的窗口 #调用方法 fac_detect_demo() cv.waitKey(0)#无限等待 随便按下一个键 就可以退出 cv.destroyAllWindows()#使用完内存后释放
转载请注明出处,欢迎讨论和交流!