一、路径拼接:os.path.join() 与 +
import os
path1 = 'home'
path2 = 'hh'
path3 = '1.jpg'
patha = path1 + path2 + path3
pathb = os.path.join(path1, path2, path3)
print ('patha = ', patha)
print ('pathb= ', pathb)
输出
patha = homehh1.jpg
pathb = home/hh/1.jpg
os.path.join():
1.带“/”相加:如果各组件名的首字母不包含 ’/’,则函数会自动加上
2.如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃
3.如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾
+:地址直接相连
二、简单的读图片,resize,保存图片,读图
import cv2
import os
for i in range(1,4):
img_dir = str(i)+'.jpg'
img_dir = os.path.join(os.getcwd(),img_dir)
print('original img_dir:', img_dir)
img = cv2.imread(img_dir)
print('original size:', img.shape) #(x-高,y-宽)
cv2.imshow('original_img',img)
x, y = img.shape[0:2]
print(x,y)
new_img = cv2.resize(img,(int(y/2),int(x/2))) #缩放到原来的二分之一,输出尺寸格式为(宽,高)
#cv2.imshow('resized_img',new_img)
#cv2.waitKey()
newimg_dir = str(i+10)+'.jpg'
cv2.imwrite(newimg_dir, new_img, [int(cv2.IMWRITE_JPEG_QUALITY),80])
备注:
1. cv2.resize(img, (宽,高))
2. cv2.imwrite(filename,img,flag)
第一个参数是文件名,默认保存在当前目录下,第二个参数是要保存的图片,第三个参数是保存类型:对于jpeg图片,为cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成int,数值为0-100,越高则图片质量越高,默认值95;对于png图片,为cv2.IMWRITE_PNG_COMPRESSION,从0到9 压缩级别越高图像越小。
tips:jpeg是有损编解码,png是无损,jpeg图像的写入、读取结果会不一致,而png图像则完全一致。
3. cv2.imread() 与plt.imread()
cv2.imread() 读出来的图片是BGR
4. 读图显示
a = plt.imread('11.jpg')
b = plt.imread('12.jpg')
plt.subplot(1,2,1) #plt.subplot('行','列','编号') 分别对不同编号的图片进行title编辑等
plt.title('11.jpg')
plt.imshow(a)
plt.subplot(1,2,2) #对第二张图布局
plt.title('12.jpg')
plt.imshow(b)
plt.show() #将两张图显示出来,如果不用subplot,则只会显示出最后一张图
在图中插入公式可以参照以下链接:
https://www.jianshu.com/p/3edb07f58ecd
ax.text(0.1, 5, r"$CE(p_j)=-log(p_j)$",color='black',fontsize=15);
ax.text(0.1, 4, r"$FL(p_j)=-(1-p_j)^\gamma log(p_j)$",color='black',fontsize=15);
可得到: