python中openCV2/numpy/matplotlib.pylab/PIL使用小例子
程序员文章站
2022-07-09 19:28:55
1. CV2库进行图片操作 #图片操作 #导入对应的库 import numpy as np import cv2 #导入对应的图片 imread为图片路径 girls = cv2.imread('./girl.jpg') #查看图片的数据形状(黑白为2维数据,彩色为3维数据) girls.shap ......
1. cv2库进行图片操作
#图片操作 #导入对应的库 import numpy as np import cv2 #导入对应的图片 imread为图片路径 girls = cv2.imread('./girl.jpg') #查看图片的数据形状(黑白为2维数据,彩色为3维数据) girls.shape #展示图片,窗口名为girl,加载数据为girls cv2.imshow('girl',girls) #等待键盘输入,单位毫秒,如果为0 无限等待 cv2.waitkey(0) #关闭图形窗口 cv2.destroyallwindows() #bgr 颜色通道bgr #pil rgb 设置为灰色 girls2 = cv2.cvtcolor(girls,code = cv2.color_bgr2gray) cv2.imshow('gray',girls2) cv2.waitkey(0) cv2.destroyallwindows() #图片输出保存为girls_gray.jpg cv2.imwrite("./girls_gray.jpg",girls2) #设置图片的大小144,158 girls3 = cv2.resize(girls,dsize = (144,158)) cv2.imshow('min',girls3) #设置退出条件 while true: if ord('q') == cv2.waitkey(3000): break cv2.destroyallwindows()
2. 数据操作
#导入库 import numpy as np #设置一个列表 l = [1,2,3,4,5,6,7] #作为array数组 nd = np.array(l) #求和 nd.sum() #标准差 nd.var() #标准差 nd.std() #查看数据类型 nd.dtype #指数 e np.exp(3) a = np.array([1,3,5,7,np.nan]) b = a + 10 #统计学 平均值/中位数/方差/标准差/协方差(两个属性求解)/关联(相关性系数) #a和b相关 np.corrcoef(a,b) nd = np.random.randint(0,1000, size= 100) #查找数组nd中少于109的值 np.argwhere(nd <= 109) #直方图,统计数据出现的频次 np.histogram(nd,bins = 10) #保存数据 np.savetxt('./data.txt',nd) #读取文件 np.loadtxt('./data.txt') #获取最小的5个数 np.partition(nd,kth = 5)[:5] #获取最大的5个数 np.partition(nd,kth = -5)[-5:] #随机生成array数组 4*5 nd2 = np.random.randint(0,150,size= (4,5)) #选取数组中的元素 nd2[1,1] #进行切片操作,前三行 nd2[0: 3] #前三行,前三列 nd2[0:3,0:3]
3. pil图片操作
#导入对应库 from pil import image #导入对应图片 girl = image.open('girls.jpg') #图片数据为ndarray #彩色图片三维,高度/宽度/像素 红绿黄 girls = np.array(girl) #行 列 像素 girls.shape #数据类型 girls.dtype #最大值 girls.max() #array转换成image girls2 = girls[:,:,::-1] image.fromarray(girls2) #图片缩小 image.fromarray(girls[::5,::5]) #更改颜色 image.fromarray(girls[:,:,[1,0,2]]) #图片变为黑白 image.fromarray(girls[:,:,0])
4. matplotlib.pylab图片操作
#导入对应包 import matplotlib.pylab as plt %matplotlib inline #加载图片 plt.imshow(girls) #图片旋转180 plt.imshow(girls[::-1]) #图片模糊处理 plt.imshow(girls[::-10,::-10]) # 剪切图片 girls6 = girls[:,:230] plt.imshow(girls6) #拼接图片 girls7 = np.concatenate([girls6,girls],axis = 1) plt.imshow(girls7)
5. opencv操作视频
#导入对应库 import numpy as np import cv2 #读取视频 cap = cv2.videocapture('./video.mp4') #读取视频中的每一帧数据 flag,frame = cap.read() #播放视频画面 一帧 cv2.imshow('nothing',frame) cv2.waitkey(0) cv2.destroyallwindows() #循环播放每一帧画面 while cap.isopened(): #每一帧数据都读取 flag,frame = cap.read() cv2.imshow('norhing',frame) #读取到最后一帧 if flag == false: break #输入q为退出 if ord('q') == cv2.waitkey(5): break cv2.destroyallwindows() #资源释放 cap.release #参数为零调取本地摄像头 # cap = cv2.videocapture(0) cap = cv2.videocapture('./video.mp4') #调取训练集 https://github.com/opencv/opencv/tree/master/data/haarcascades_cuda detector = cv2.cascadeclassifier('./haarcascade_frontalface_default.xml') while cap.isopened(): flag,frame = cap.read() #设置红色圆圈圈出人脸 gray = cv2.cvtcolor(frame,code = cv2.color_bgr2bgra) #设置对应参数,获得最优识别 face_zone = detector.detectmultiscale(gray,scalefactor = 1.3, minneighbors = 5) #对应坐标画圆 for x,y,w,h in face_zone: cv2.circle(frame,center = (x + w//2,y + h//2),radius = w//2, color = [0,0,255],thickness = 2) if flag == false: break cv2.imshow('norhing',frame) if ord('q') == cv2.waitkey(5): break cv2.destroyallwindows() cap.release
上一篇: 利用jieba库画词云
下一篇: 用python代替人脑运算24点游戏