基于opencv的车道线检测(一)opncv安装及基础函数使用


前言

`选择opencv的理由:
OpenCV是一个开源计算机视觉库,提供了广泛的图像处理和计算机视觉功能。它支持多种编程语言,如C++、Python等,并可跨平台使用。
OpenCV中提供了许多函数和工具可用于车道线检测,包括灰度化、平滑化、边缘检测、霍夫变换等。通过这些功能的组合,可以实现有效的车道线检测算法。
OpenCV还提供了一些示例代码和教程,使用户能够快速上手并开始构建自己的车道线检测程序。此外,OpenCV还有一个活跃的社区,用户可以在其中获得支持和反馈。
总之,OpenCV是一个非常强大的计算机视觉库,可用于实现车道线检测和其他图像处理任务。熟练掌握OpenCV的基本功能和算法,可以帮助构建高效准确的车道线检测程序。

作为新手,这里我先从安装opencv库开始。
前置条件:Windows10系统
      已安装python和Pycharm

一、opencv安装

   首先win+R,输入cmd打开终端,(这里我默认你已经安装好了python环境),输入pip install opencv-python,然后系统会自动安装,这个过程比较漫长,大概5分钟左右,然后安装成功。(这里我是直接下载好了,如果因为下载速度慢而失败,建议搜索国内的镜像源来下载。)

   打开pycharm,新建一个项目,使用一下代码验证是否安装成功:

import cv2
print(cv2.__version__)

结果显示:
在这里插入图片描述
说明我的版本信息正确。
但是!!!
仍然出现了一个问题,这困扰了我一天。
当我使用cv2.时,编译器并没有给我自动补全后续的代码,并且如果我手动输入如cv2.imread()时,ctrl+鼠标左键也无法跳转到该函数的说明。
因此,我参考了许多解决方法,如:
1.在pycharm的文件-设置-编译器解释-导入安装的cv2路径
2.把根目录里的cv2.pyd放到上一级文件site-packages里去。
但是都失败了,最后我发现,这貌似是因为2023年4月的opencv版本太新,可能与pycharm版本不兼容导致的,因此我找到了解决办法:

回退opencv版本到3.4版本

首先,win+R,输入cmd打开终端,(这里我默认你已经安装好了python环境),输入pip install opencv-python==,会看到过往的版本号:
在这里插入图片描述
然后选择3.4版本,我选择的是3.4.10.35,
输入pip install opencv-python==3.4.10.35
在这里插入图片描述
然后打开pycharm,可以看到cv2.后续成功补全代码,并支持跳转查看。

二、图片的读取、展示、保存

1.cv2.imread

cv2.imread是OpenCV库中用于读取图像的函数,可以从本地文件系统中读取图像并将其加载到内存中。

cv2.imread的语法如下:

cv2.imread(filename, flags)
其中filename是要读取的图像文件名(包括路径),flags是一个可选参数,指定读取图像的方式。

flags可能的标志包括:
cv2.IMREAD_COLOR,表示以彩色模式读取图像。
cv2.IMREAD_GRAYSCALE:以灰度模式读取图像。
cv2.IMREAD_UNCHANGED:以原始模式读取图像,包括alpha通道。

例如,以下代码演示了如何使用cv2.imread读取一张彩色图像:

import cv2

img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)

该代码将从本地文件系统中读取名为’test.jpg’的图像,并将其加载为一个NumPy数组。注意,如果文件不存在或文件格式不正确,则会返回空数组。

2.cv2.imshow

cv2.imshow是OpenCV库中用于显示图像的函数,可以将图像数据显示在一个窗口中。

cv2.imshow的语法如下:

cv2.imshow(winname, mat)
其中winname是窗口名称,mat是要显示的图像数据。注意,该函数只能显示NumPy数组中的图像数据,如果希望显示其他格式的图像,需要使用其他函数进行转换。

import cv2
img = cv2.imread('66666.png',cv2.IMREAD_GRAYSCALE)#以灰度图格式读取车道线图片
print(type(img))#打印格式
print(img.shape)#打印图片尺寸
cv2.imshow('image_DX2003zhouyilin',img)#显示灰度图片

3.cv2.imwrite

cv2.imwrite() 是 OpenCV Python 库中的一个函数,可用于将图像保存为文件。它接受两个参数:文件名和要保存的图像数组对象。文件名应该包括文件扩展名,以指示要保存的图像格式(例如,.png、.jpg 等)。图像数组数据类型应与所选文件格式兼容。

import cv2
img = cv2.imread('66666.png',cv2.IMREAD_GRAYSCALE)#以灰度图格式读取车道线图片
print(type(img))#打印格式
print(img.shape)#打印图片尺寸
cv2.imshow('image_DX2003zhouyilin',img)#显示灰度图片
k = cv2.waitKey(0)#为了防止程序结束导致图片瞬间出现并消失,增加阻塞函数
cv2.imwrite('grey_image.bmp',img)#第一个参数是文件名,后面必须要有图片拓展名

运行后,会在项目文件夹中生成一个相同后缀格式的图片文件。

总结

本文仅仅简单介绍了opencv中基础的三个函数的使用,后续将继续深入研究opencv。

猜你喜欢

转载自blog.csdn.net/qq_53092944/article/details/130237346