关于Python-OpenCV:批量读取模板的方法
题记:最近在同学的实验室搞机械臂项目,目标是做一个对实验室器材识别并且夹取的小车。由于大家都是小白过程中还是遇到很多问题,故边学习边进行博客编写,待日后回顾参考
一、OpenCV关于模板提取的问题:
如何做到批量读取文件是入门Python的第一个目标,参考了liulina603-os.walk() 在windows 和linux 上遍历不一样以及简单随风-OpenCV: 图片的缩放的博客后,我自己写了一个小小的程序:
import numpy as np
import argparse
import cv2
import os
def cv_show(name,img):
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
#创建一个方便查看图片的函数
root_path = ("/home/xxx/xxx/xxx/test/")
#上面的路径可以根据读者的路径进行改变
dir = root_path+"image"+"/"
#上面的代码看起来有点多余,但其实还是需要的
list = os.listdir(dir)
#利用os自带的遍历函数(windows是os.walk)
print(list)
#在这里查看传入到list中的文件名称,或发现只有文件名称
i=-1
images = [0]
#创建一个列表
#========以下 开始进行批量读取=====================
for image in list:
i = i+1
#不能改成i ++
print (image)
#会发现 image这个遍历变成了一个个的单独的名称
path = dir+image
#将文件名称增加到 dir 中形成一个完整的 path 方便之后cv2.imread
print (path)
ReadImage = cv2.imread(path,cv2.IMREAD_GRAYSCALE)
#转成灰度图
print (ReadImage.shape)
W = ReadImage.shape[0]
H = ReadImage.shape[1]
RsH = int(H * 0.3)
RsW = int(W * 0.3)
RsImage = cv2.resize(ReadImage,(RsH,RsW))
#因为原图可能比较大,所以在这里加了一个缩小函数,目的是让该图片容易看一点
print (RsImage.shape)
#RoiImage = ReadImage[300:800,180:600]
#cv_show("read",RsImage)
images.append(RsImage)
#将变化后的变量数据用append 函数添加到images列表里面
images[i] = (RsImage)
cv_show("image",images[i])
#这里显示每一张图片
#如果要看每一次images列表的变化,可以直接 print (images)
二、最近在从Anaconda-Jupyter-Python转到VSCode遇到的一些问题
- 一般在Jupyter notebook上面import cv2是非常直接的,但是转移到VSCode就需要改成
from cv2 import cv2
- 在用arguments引入参数的时候并不是像ecsplicite一样直接就可以打开一个可视化界面引入文件路径,而是要在luanch.json文件中进行编辑,这一项是比较麻烦的。