计算机视觉OpenCv初入门

Posted Never Leung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机视觉OpenCv初入门相关的知识,希望对你有一定的参考价值。

 下面就一个例子简单体会一下cv2的简单应用例子:
问题设置场景:一个文件夹里面包含了许多文件,要把所有是图片的找出来,并且展示。同时修改图片的名字(格式随便自己定)
注:笔者这里定义格式为1-9    images文件夹在F盘里面的my_opencv下的exp01文件夹下

Settle:
    1.先遍历文件夹,找到对应的图片(通过后缀名字查找).jpg/.png
    2.修改图片的命名格式
    3.展示图片(直接cv2.imshow() or matlab中的plot.imshow())

开始文件夹的目录构成:

'''
Author: Never Leung
Date: 2021-10-31 17:20:40
LastEditTime: 2021-10-31 19:40:49
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath: \\exp01\\1-3.py
'''
import cv2
import os
import numpy as np
from matplotlib import pyplot as plt

path22='F:\\my_opencv\\exp01\\images' #文件夹所在的位置

k=1
#遍历文件夹下的所有文件或者文件夹,访问到的文件或者文件夹以列表形式返回
for filename in os.listdir(path22):
       #判断后缀名是否为图片 字符串.endswith('后缀字符串')
       if filename.endswith('.jpg') or filename.endswith('.png'):
              #通过os.path.join()拼接,找到图片的所在的绝对路径,然后显示出来
              oldname1 = os.path.join(path22, filename)
              img=cv2.imread(oldname1)
              cv2.imshow(filename,img)
              #修改命名格式为指定格式
              img_index=filename.index('.')
              filename_qianzhui=filename[:img_index]
              filename=filename.replace(filename_qianzhui,str(k))
              k+=1
              newname1 = os.path.join(path22, filename)
              #正式修改名字(按指定格式) os.rename
              os.rename(oldname1, newname1)
              cv2.waitKey(1000)
cv2.destroyAllWindows()
#修改完图片的名字的基础上,再次利用matlab里面的plot中的subplot方法进行多张图片在同一窗口中展示
for filename in os.listdir(path22):
       #判断后缀名是否为图片 字符串.endswith('后缀字符串')
       if filename.endswith('.jpg') or filename.endswith('.png'):
              #通过os.path.join()拼接,找到图片的所在的绝对路径,然后显示出来
              oldname1 = os.path.join(path22, filename)
              img=cv2.imread(oldname1)
              #为用pyplot显示图片比较美观,所以裁剪图片大小
              img=cv2.resize(img,(200,200))
              plt.subplot(2,4,k)
              plt.title(filename)
              plt.axis('off')
              plt.imshow(img)
              k+=1
plt.show()

执行代码后,文件夹下的图片的名字变为: 

至于图片的展示:第一种图片的展示为每隔1s图片就会按顺序展示出来,第二种图片的展示是在一个窗口中展示多张图片,使得更加美观和有对比性。第二种图片的效果图如下

总结

  涉及到的库:os,matlib.plot,cv2

知识点:

 1.os.listdir(对应文件夹存放路径)来遍历文件夹下的一级内容,以列表形式返回

 2.字符串的startswith() or endswith()方法判断前缀或者后缀

 3.使用os库时找对应文件时,并不能只是单纯的字符串拼接,即用'+'连接,只能用os.path.join()来连接对应文件的文件名之前的路径和文件名,这样才相当于找到对应文件。

4.文件改名,利用os.rename(旧名,新名)

5.用matlib中的plot.subplot(行数,列数,对应第几个位置)时,要协调好总的展示的图片数和行列数的映射关系,否则会造成数目和维数不对而进行报错。就本例子而言,一共有8张图片,如果你分层时,设置为(2,2)就会报错,从第5张图片开始,因为一共只有4个格让你放图片。

6.最后plot的图片展示不仅要在plot.imshow(),还要在最后加一句plot.show(),最终结果才会呈现。

   

 

 

以上是关于计算机视觉OpenCv初入门的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV入门级图像处理教程,从小白到视觉算法工程师

计算机视觉 : 10分钟入门opencv

大伽带你入门OpenCV Python计算机视觉

计算机视觉-OpenCV入门讲解

《入门图像处理》计算机视觉入门

计算机视觉方面快速入门的重要工具之一:OpenCV