PythonⅡ
一:批量处理文件
1.批量重命名
import os def rename(): i = 0 path = r'/Users/lorristar/Desktop/zio' #访问路径 filelist = os.listdir(path) for files in filelist: i = i + 1 Olddir = os.path.join(path, files) #旧文件路径 if os.path.isdir(Olddir): #跳过文件夹 continue filename = 'zio2' #新文件名 filetype = '.jpg' #扩展名 Newdir = os.path.join(path, filename + str(i) + filetype) os.rename(Olddir, Newdir) return True if __name__ == '__main__': rename()
2.批量删除
import os def del_files(path): for root,dirs,files in os.walk(path): for name in files: if '.jpg' in name: os.remove(os.path.join(root,name)) print('Delete files:',os.path.join(root,name)) if __name__=='__main__': path=r'/Users/lorristar/Desktop/zio' del_files(path)
二:自行实现几个图片基本操作
1.简单显示
import cv2 img = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") #读取图像 #cv2.namedWindow('zio') cv2.imshow('zio', img) #显示图像 cv2.waitKey(0) #保持窗口 cv2.destroyWindow("zio")
2.色彩转换
import cv2 img = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") #read img1 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) #改变颜色并新建一张图片 cv2.imwrite("/Users/lorristar/Desktop/zio/zio-gray.jpg",img1) #保存新建图片
3.翻转图片
import cv2 img = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") img1 = cv2.flip(img,flipCode=0)#flipCode = 0垂直翻转 flipCode = 1水平翻转 flipCode = -1绕中心点旋转 cv2.imwrite("/Users/lorristar/Desktop/zio/zio-filp.jpg",img1)
4.简单拼接
import cv2 img = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") img2 = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") img3 =cv2.hconcat([img,img2])#hconcat 水平拼接 vconcat 垂直拼接 cv2.imwrite("/Users/lorristar/Desktop/zio/zio-concat.jpg",img3)
5.局部剪切
import cv2 img = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") img3 =img[300:400,50:300] #剪切 开始的y:结束的y,开始的x:结束的x cv2.imwrite("/Users/lorristar/Desktop/zio/zio-frame.jpg",img3) cv2.imshow("image", img3) #读取剪切图片 cv2.waitKey(0)
6.图片缩放
import cv2 img = cv2.imread("/Users/lorristar/Desktop/zio/zio.jpg") img2 = cv2.resize(img,(165,213), interpolation = cv2.INTER_CUBIC) # 缩放 cv2.imwrite("/Users/lorristar/Desktop/zio/zio-resize.jpg",img2)
CV_INTER_NN - 最近邻插值,
CV_INTER_LINEAR - 双线性插值 (缺省使用)
CV_INTER_AREA - 使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。
CV_INTER_CUBIC - 立方插值.
7.绘图代码
import cv2 import numpy as np img = 255*np.ones((350,512,3),np.uint8)#unit8:0~255 font = cv2.FONT_HERSHEY_DUPLEX #font = cv2.FONT_HERSHEY_COMPLEX# 设置字体 #文本 # 图片对象、文本、 位置、 字体、字体大小、颜色、 字体粗细 cv2.putText(img, "happy day", (50,300), font, 0.8, (25, 25, 25), 2,)#颜色可以自己调整,范围为0-255 #线 #起点 终点 颜色 粗细 cv2.line(img, (50,310), (185,310), (0, 0,0),4) #矩形 #左上顶点 右下顶点 cv2.rectangle(img, (80,8), (200,100), (0, 255,0),2) #圆形 #圆心 半径 颜色 控制是否填充 -1表示填充 cv2.circle(img,(60,60),30,(0,0,213),1) #椭圆 #中心点 长轴 短轴 偏转角度,起始角度,终止角度 cv2.ellipse(img,(100,300),(100,50),180,0,360,(20,213,79),1) cv2.imshow("Draw", img) cv2.waitKey(0)