python与openCV2的不可不说的关系

mac2025-06-23  9

今天我们要弄的是关于python与openCV2的使用。 而我们要使用CVopen2的命令,肯定需要各种照片,但是这些照片的命名大多数是杂乱无序的,所以我们要有个前期工作。 一:批量重命名目标文件,批量删除文件。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191101142749447.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NodXhpYW9fc2N4,size_16,color_FFFFFF,t_70 首先将这些图片放到同一个文件夹中,然后利用os系统模块。

#对文件进行批量重命名 import os path = 'C:/Users/songcx/Desktop/tubao' filelist = os.listdir(path)#返回该文件夹内的所有文件 i = 0 for file in filelist: old = os.path.join(path,file) filetype = os.path.splitext(file)[1]#分离文件名和扩展名 if (filetype=='.jpg'): i = i+1; new = os.path.join(path,str(i)+filetype) os.rename(old,new) else: continue

效果如图。 准备工作完成后,我们就可以开始了。 二:用openCV2对照片进行各种修改。 1.显示我们想要的图片。

import cv2 one=cv2.imread('C:/Users/songcx/Desktop/tubao/1.jpg') cv2.imshow('suibian',one) cv2.waitKey(0)

是不是很好看啊<( ̄▽ ̄)/。 2.保存我们修改后的图片。

#该代码一般不单独使用,和后面的操作结合使用。 import cv2 one=cv2.imread('C:/Users/songcx/Desktop/tubao/1.jpg') cv2.imwrite('C:/Users/songcx/Desktop/tubao/one.jpg',img)

3.截取部分图片。 终于到正文了,这次我们以图2为例。

import cv2 img=cv2.imread('C:/Users/songcx/Desktop/tubao/2.jpg') bianhua=img[200:400,200:400]#截取200-400行,200-400列的图像 cv2.imshow('wusuoweila',bianhua) cv2.waitKey(0)

4.图片翻转。

import cv2 img=cv2.imread('C:/Users/songcx/Desktop/tubao/2.jpg') img1=cv2.flip(img,1)#大于0,左右翻转 img2=cv2.flip(img,0)#等于0,上下翻转 img3=cv2.flip(img,-1)#小于0,先上下翻转再左右翻转 cv2.imshow('text',img) cv2.imshow('text1',img1) cv2.imshow('text2',img2) cv2.imshow('text3',img3) cv2.waitKey(0)

这里就不给出展示了。 5.缩放图片

import cv2 img=cv2.imread('C:/Users/songcx/Desktop/tubao/2.jpg') img1=cv2.resize(img,(500,500))#设置输出图片的尺寸 img2=cv2.resize(img,None,fx=0.7,fy=0.7)#None指图片尺寸,但我们设置了缩放因子,就无需图片尺寸 cv2.imshow('text',img1) cv2.imshow('text1',img2) cv2.waitKey(0)

6.转换图片颜色。

import cv2 img=cv2.imread('C:/Users/songcx/Desktop/tubao/3.jpg')#cv2.imread读进来的图片格式是BGR(W,H,C),而不是RGB img1=cv2.resize(img,(400,400)) cv2.imshow('BGR',img1) img2=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY)#将BGR转化成灰度图像 cv2.imshow('GRAY',img2) cv2.imwrite('C:/Users/songcx/Desktop/tubao/Gray.jpg',img2) cv2.waitKey(0)

7.在同一个平面插入两张图片。

import cv2 import numpy as np img=cv2.imread('C:/Users/songcx/Desktop/tubao/2.jpg') img1=cv2.resize(img,(500,500)) img2=cv2.flip(img1,1)#大于0,左右翻转 img3=np.vstack([img1,img2])#在竖直方向上堆叠 img4=np.hstack([img1,img2])#在水平方向平铺 cv2.imshow('text',img3) cv2.imshow('text1',img4) cv2.waitKey(0)

这里给出水平方向的效果。 三.用opencv2绘图。 最有意思的功能来了,虽然不如其他绘图软件方便,但是这个一样有趣。 首先来看一下基本代码,该代码来自我的学姐(╹▽╹)。

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)

这个佩奇的代码是网上找的,原主是这位 https://blog.csdn.net/SESESssss/article/details/102769085

import cv2 import numpy as np img=255*np.ones((700,600,3),np.uint8) font=cv2.FONT_HERSHEY_DUPLEX cv2.ellipse(img,(390,436),(33,80),163,0,360,(0,0,255),4) cv2.ellipse(img,(245,436),(33,80),-163,0,360,(0,0,255),4) cv2.line(img,(217,513),(418,513),(0,0,255),3) cv2.rectangle(img,(260,360),(375,513),(0,0,255),3) cv2.rectangle(img,(217,415),(418,513),(0,0,255),3) cv2.rectangle(img,(263,363),(372,511),(120,120,255),-1) cv2.rectangle(img,(220,418),(415,510),(120,120,255),-1) cv2.ellipse(img,(390,436),(30,77),163,0,360,(120,120,255),-1) cv2.ellipse(img,(245,436),(30,77),-163,0,360,(120,120,255),-1) cv2.ellipse(img,(250,196),(16,33),150,0,360,(203,165,255),4) cv2.ellipse(img,(305,181),(16,33),173,0,360,(203,165,255),4) cv2.ellipse(img,(250,196),(13,30),150,0,360,(203,192,255),-1) cv2.ellipse(img,(305,181),(13,30),173,0,360,(203,192,255),-1) cv2.ellipse(img,(300,300),(95,100),180,0,360,(203,165,255),3) cv2.ellipse(img,(327,230),(120,50),160,0,360,(203,165,255),3) cv2.ellipse(img,(300,300),(92,97),180,0,360,(203,192,255),-1) cv2.ellipse(img,(327,230),(117,47),160,0,360,(203,192,255),-1) cv2.ellipse(img,(413,197),(25,32),150,0,360,(203,165,255),3) cv2.circle(img,(300,220),17,(203,165,255),3) cv2.circle(img,(345,200),17,(203,165,255),3) cv2.circle(img,(300,220),14,(255,255,255),-1) cv2.circle(img,(345,200),14,(255,255,255),-1) cv2.circle(img,(294,220),6,(0,0,0),-1) cv2.circle(img,(337,200),6,(0,0,0),-1) cv2.ellipse(img,(255,300),(29,34),150,0,360,(203,165,255),-1) cv2.circle(img,(405,200),6,(153,115,205),-1) cv2.circle(img,(422,195),6,(153,115,205),-1) cv2.ellipse(img,(333,297),(50,50),8,0,130,(113,85,255),3) cv2.line(img,(413,391),(480,410),(203,192,255),7) cv2.line(img,(222,391),(160,410),(203,192,255),7) cv2.line(img,(480,410),(495,429),(203,192,255),8) cv2.line(img,(480,410),(498,415),(203,192,255),8) cv2.line(img,(480,410),(498,399),(203,192,255),8) cv2.line(img,(160,410),(139,410),(203,192,255),8) cv2.line(img,(160,410),(145,399),(203,192,255),8) cv2.line(img,(160,410),(145,423),(203,192,255),8) cv2.line(img,(257,519),(257,563),(203,192,255),11) cv2.line(img,(357,519),(357,563),(203,192,255),11) cv2.ellipse(img,(387,563),(35,8),180,0,360,(255,255,255),-1) cv2.ellipse(img,(287,563),(35,8),180,0,360,(255,255,255),-1) cv2.line(img,(275,555),(275,569),(0,0,255),3) cv2.line(img,(285,555),(285,569),(0,0,255),3) cv2.line(img,(375,555),(375,569),(0,0,255),3) cv2.line(img,(385,555),(385,569),(0,0,255),3) cv2.line(img,(202,463),(192,463),(203,192,255),3) cv2.circle(img,(192,457),5,(203,192,255),3) cv2.line(img,(200,460),(186,473),(203,192,255),3) cv2.imshow("Draw",img) cv2.imwrite('C:/Users/songcx/Desktop/tubao/peiqi.jpg',img) cv2.waitKey(0)

最新回复(0)