您好,登录后才能下订单哦!
今天小编给大家分享一下OpenCV库怎么安装和使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
OpenCV 可以通过 pip 安装,方法是在 Jupyter Notebook 单元中运行以下命令:
!pip install --upgrade opencv-python
pip 是 Python 的默认包管理器和独立的可执行文件,但以这种方式运行它可确保将包安装到 Anaconda 环境中。
如果软件包安装正确,此 Python 代码应该可以正常运行:
import cv2
因为我们要在我们的 Jupyter Notebook 中显示图像,我们还应该确保matplotlib
已安装:
!pip install --upgrade matplotlib
读取 OpenCV 可以处理的图像很简单:
import cv2
im = cv2.imread("path/to/image.jpg")
OpenCV 支持多种图像格式,当解析图像失败时,结果imread
将是None
. 请注意,如果未找到图像文件,则不会引发错误 - 结果也会如此None
。
假设找到了图像,然后我们可以使用matplotlib
. 为此,我们将使用此辅助函数:
from matplotlib import pyplot
def plot_img(img):
rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
pyplot.imshow(rgb)
OpenCV 读取 BGR 颜色格式的图像,但matplotlib
希望它们是 RGB,所以首先我们必须转换图像。然后就可以绘制了。
您可以按如下方式使用此功能:
plot_img(im)
OpenCV 和matplotlib
集成如此干净是因为 OpenCV 图像实际上只是一个包含像素值的多维 NumPy 数组,并且matplotlib
可以使用它。
有很多是OpenCV的可以做。我们将特别关注对象检测。
对象检测与所谓的级联分类器一起工作。这种方法使用机器学习:分类器在包含所需对象的图像(正图像)和不包含它的图像(负图像)上进行训练。您可以训练自己的分类器,但 OpenCV 还提供了几个可从其 GitHub 下载的预训练模型。
让我们试试俄罗斯车牌的预训练分类器haarcascade_russian_plate_number.xml。如果您想要测试图像,可以使用Sergey Rodovnichenko 的 Lada Vesta 图像。
我们可以读取图像并绘制它以查看是否一切顺利,就像以前一样:
car = cv2.imread("Pictures/lada-vesta.jpg")
plot_img(car)
接下来,我们创建分类器:
蟒蛇复制代码
classifier = cv2.CascadeClassifier()
classifier.load("path/to/haarcascade_russian_plate_number.xml")
检测工作是通过以下detectMultiScale
方法完成的:
plates = classifier.detectMultiScale(car)
这将返回一个 NumPy 数组。它实际上是一个数组数组,每个内部数组都是检测到的板的矩形边界,格式为[ x, y, width, height ]
. 为了直观地显示它们,我们可以在图像上绘制矩形,然后绘制结果:
with_indicators = car
for plate in plates:
x, y, width, height = plate
with_indicators = cv2.rectangle(with_indicators, (x, y),
(x + width, y + height),
(0, 0, 255), 5)
矩形函数采用图像、左上角坐标、右下角坐标、颜色和厚度。它返回一个带有矩形的新图像。我们可以绘制结果:
plot_img(with_indicators)
这个例子展示了 OpenCV 的针对俄罗斯车牌的预训练分类器,但这并不是唯一可用的分类器。还有用于面部、眼睛等的预训练分类器,它们的使用方式与该分类器完全相同。
以上就是“OpenCV库怎么安装和使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。