一直以来进行相机标定的时候需要对采集的图像进行重命名,一直像个智障一样一个一个对图像进行操作,效率极低。突然就明白了那句话,“人生苦短,我用python”
import os
path = "E:\\image"
filelist = os.listdir(path) #该文件夹下所有的文件(包括文件夹)
count=0
for file in filelist:
print(file)
for file in filelist: #遍历所有文件
Olddir=os.path.join(path,file) #原来的文件路径
if os.path.isdir(Olddir): #如果是文件夹则跳过
continue
filename=os.path.splitext(file)[0] #文件名
filetype=os.path.splitext(file)[1] #文件扩展名
Newdir=os.path.join(path,str(count).zfill(6)+filetype) #用字符串函数zfill 以0补全所需位数
os.rename(Olddir,Newdir)#重命名
count+=1
增加一个c++版本的,功能是读取一个文件夹内规则命名的图像文件,对其灰度化,然后重命名存到另外一个文件夹。
#include
#include
#include
#include
#include
using namespace std;
using namespace cv;
int main()
{
Mat img = imread("00000.bmp",0);
char filename2[50];
for (int k = 0; k < 800; k++)
{
stringstream ss;
ss << setfill('0') << setw(5) << k;
string filePath = "D:\\SLAM研究\\AVM\\data\\2020-7-8\\1\\test3\\"+ss.str()+".bmp";
//imread(filePath,)
//cout << filePath << endl;
Mat img = imread(filePath, 0);
if (!img.data)
{
cout << "读取完毕" << endl;
return 0;
}
sprintf(filename2, "D:\\SLAM研究\\AVM\\data\\2020-7-8\\1\\gray3\\img%d.png",k);
cout << filename2 << endl;
imwrite(filename2, img);
}
return 0;
}
实在不想再水一篇博客了,在这里加一个,使用python画三维点的小程序。
**# 实例:
# 首先,还是需要取坐标
import numpy as np # 假设,m是给定的三维散点序列,每行就是每一个三维点坐标,x,y,z
m = np.array([[-0.068, -0.064, -0.109],
[0.0378, -0.0788, -0.1120],
[0.0015, -0.1036, -0.2014],
[0,0,0]])
x = [x[0] for x in m]
y = [x[1] for x in m]
z = [x[2] for x in m]
print(x)
print(y)
print(z)
# 然后正常画图
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d
ax = plt.subplot(projection = '3d') # 创建一个三维的绘图工程
ax.set_title('3d_image_show') # 设置本图名称
ax.scatter(x, y, z, c = 'r') # 绘制数据点 c: 'r'红色,'y'黄色,等颜色
ax.set_xlabel('X') # 设置x坐标轴
ax.set_ylabel('Y') # 设置y坐标轴
ax.set_zlabel('Z') # 设置z坐标轴
plt.show()**