小白的人工智能协会第二周培训学习任务

人工智能协会纳新培训第二周
心得+延伸内容参考+作业

本周对python部分内容进行了进一步的了解和学习,包括一些常用函数和自定义函数的学习和了解,以及对opencv的进行初步学习和认识,目前进行对opencv功能的进一步学习和图片的编辑和处理

(一)
将示例代码修改为能够批量重命名目标文件、批量删除文件等。

本处利用的代码为

import os
def printName(dir):
filelist = os.listdir(dir)#读取文件路径 
for i in filelist: print(i) path='D:/dump'#目标文件夹路径
printName(path)
#这是一个示例代码,作用为批量打印目标文件下的文件名称 #可根据以上代码修改为批量对目标文件下重命名文件名称、批量删除等 print(os.listdir(path))

批量重命名目标文件→

对于多项文件的同时批量修改重命名可以利用for循环结构进行
import os
path=input('请输入文件路径(结尾加上/):')       
#获取该目录下所有文件,存入列表中
f=os.listdir(path)

n=0for i in f:
    
    #设置旧文件名(就是路径+文件名)
    oldname=path+f[n]
    
    #设置新文件名
    newname=path+'a'+str(n+1)+'.JPG'
    
    #用os模块中的rename方法对文件改名    os.rename(oldname,newname)
    print(oldname,'======>',newname)
    
n+=1

详见人工智能协会纳新培训第一周学习记录中有的笔记与参考

批量删除文件→

import os
path = '/Users/akun/Desktop/项目/PaChongcode/Image/'#指定路径
for root, dirs, files in os.walk(path):
    for name in files:
        if name.endswith(".png"):           
            os.remove(os.path.join(root, name))
            print("Delete File: " + os.path.join(root, name))

详见人工智能协会纳新培训第一周学习记录中有的笔记与参考

(二)自行实现几个图片基本操作并将改动后的图片保存在同一个文件夹中。

以下《### ###》部分为上课参考课件
1读取图片
《###

import cv2#导入opencv包

#python中不需要声明变量
img1 = cv2.imread("D:/test/1.jpg")#绝对路径,推荐
img2 = cv2.imread("D:\\test\\2.jpg")#通常是两个斜线,单右斜线会被当成转义符
img3 = cv2.imread("3.jpeg")#相对路径,将图片放在py文件对应目录下

cv2.imshow("test1", img1)
cv2.imshow("test2", img2)
cv2.imshow("test3", img3)
cv2.waitKey(0)#没有这一句图片会一闪而过                         ###》
2保存图片
《###
import cv2# 导入OpenCV包
img=cv2.imread("D:/test/3.png",cv2.IMREAD_COLOR)
cv2.imshow("test",img)#OpenCV可以实现不同格式图片转换,支持jpg、bmp、png等图片格式相互无损转换

cv2.imwrite("D:/test/3.1.png",img)#将改变后的图像保存
cv2.imwrite("D:/test/3.2.bmp",img)
cv2.waitKey(0)                                                   ###》
例如运行下列代码
import cv2#导入opencv包
#python中不需要声明变量
img1 = cv2.imread("D:/test/1.jpg")#绝对路径,推荐
img2 = cv2.imread("D:\\test\\2.jpg")#通常是两个斜线,单右斜线会被当成转义符
cv2.imshow("test1", img1)
cv2.imshow("test2", img2)
cv2.waitKey(0)#没有这一句图片会一闪而过

在这里插入图片描述
成功得到我放于test文件的照片
3截取图像

###
import cv2
img   = cv2.imread("D:\\test\\2.jpg")
frame = img[200:400,200:400] #截取部分图像,200-400行,200-400列

cv2.imshow("test",frame)#显示截取后的图像
cv2.waitKey(0)                                              # ##》
      

在这里插入图片描述
4图片翻转

###
import cv2

img=cv2.imread("D:/test/1.jpg",cv2.IMREAD_COLOR)

flipCode1=1#大于0左右翻转
flipCode2=0#等于0上下翻转
flipCode3=-1#小于0先上下翻转再左右翻转

img1 = cv2.flip(img, flipCode1)#filpCode控制图片翻转方向
img2 = cv2.flip(img, flipCode2)
img3 = cv2.flip(img, flipCode3)

cv2.imshow("test",img)
cv2.imshow("test1",img1)
cv2.imshow("test2",img2)
cv2.imshow("test3",img3)
cv2.waitKey(0)                                                     ###》

在这里插入图片描述
5缩放图片

###
import cv2# 导入OpenCV包

img  = cv2.imread("D:/test/2.jpg",cv2.IMREAD_COLOR)
img1 = cv2.resize(img, (700, 700))#设置输出图片的尺寸
img2 = cv2.resize(img, None, fx=0.7, fy=0.7)#None的位置本来是输出图片的尺寸,这里设置了缩放因子

#fx-水平轴上的比例因子,fy-垂直轴上的比例因子
cv2.imshow("test",  img)
cv2.imshow("test1", img1)
cv2.imshow("test2", img2)
cv2.imwrite("D:/test/resize.jpg", img1)# 保存图像
cv2.waitKey(0)
###》

在这里插入图片描述
6在同一个窗口显示两张图片

###
import cv2
import numpy as np

img  = cv2.imread("D:/test/resize.jpg")
img2 = cv2.imread("D:/test/resize.jpg")
#imgs = np.hstack([img,img2])#在水平方向上平铺
imgs = np.vstack([img,img2])#在竖直方向上堆叠

cv2.imshow("mutil_pic", imgs)
cv2.waitKey(0)
###》

(三)
利用opencv的绘图功能完成小猪佩奇的绘画
例案课件中的相关绘图代码
《###

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)
###》

在这里插入图片描述
经过无数次尝试后得到如下成果

import cv2 
import numpy as np
img = 255*np.ones((500,500,3),np.uint8)#unit8:0~255
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(img, "peppa pig", (150,450), font, 0.8, ( 180,125,255 ), 2,)
cv2.line(img, (140,300), (180,150), (180,125,255),4)#上身左
cv2.line(img, (300,300), (260,150), (180,125,255),4)#上身右
cv2.ellipse(img,(220,300),(80,40),180,180,360,(180,125,255),4) #椭圆裙底
cv2.line(img, (190,335), (190,375), (180,125,255),4)#腿
cv2.line(img, (250,335), (250,375), (180,125,255),4)#腿
cv2.ellipse(img,(200,390),(16,10),30,0,360,(87,139,46),4) #左脚
cv2.ellipse(img,(260,390),(16,10),30,0,360,(87,139,46),4) #左脚
cv2.line(img, (110,240), (160,200), (180,125,255),4)#左臂
cv2.line(img, (122,230), (107,230), (180,125,255),4)#左上指
cv2.line(img, (122,230), (122,245), (180,125,255),4)#左下指
cv2.line(img, (330,240), (280,200), (180,125,255),4)#右臂
cv2.line(img, (318,230), (333,230), (180,125,255),4)#右上指
cv2.line(img, (318,230), (318,245), (180,125,255),4)#右下指
cv2.ellipse(img,(220,120),(50,50),0,0,270,(180,125,255),4) #脸
cv2.line(img, (220,70), (290,55), (180,125,255),4)#上颚
cv2.line(img, (270,120), (310,85), (180,125,255),4)#下颚
cv2.ellipse(img,(230,130),(20,10),0,0,145,(34,34,178),4) #嘴
cv2.ellipse(img,(295,75),(12,18),150,0,360,(180,125,255),4) #鼻
cv2.circle(img,(290,72),2,(180,125,255),4)#左鼻
cv2.circle(img,(300,72),2,(180,125,255),4)#右鼻
cv2.ellipse(img,(210,70),(10,18),15,160,360,(180,125,255),4) #上耳朵
cv2.ellipse(img,(185,75),(10,18),0,150,350,(180,125,255),4) #下耳朵
cv2.circle(img,(220,90),10,(180,125,255),3) #左眼
cv2.circle(img,(245,85),10,(180,125,255),3)#右眼
cv2.circle(img,(215,90),3,(0,0,0),-1) #左眼珠
cv2.circle(img,(240,85),3,(0,0,0),-1)#右眼珠
cv2.circle(img,(195,120),15,(180,125,255),3)#腮红
cv2.imshow("Draw", img)
cv2.waitKey(0)

在这里插入图片描述
由于个人对于颜色及线条长度的艺术感知能力能力不足
及相关代码能力的缺失
对于原图还原度只能做到如上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值