知行编程网知行编程网  2022-09-26 07:00 知行编程网 隐藏边栏  16 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于python怎么使用opencv的相关知识,包括python opencv库,以及Python opencv这些编程知识,希望对大家有参考作用。

python如何使用opencv

OpenCV 是一个 Python 库,旨在解决计算机视觉问题。 OpenCV 最初由 Intel 于 1999 年开发,但后来由 Willow Garage 资助。它支持多种编程语言,例如 C++、Python、Java 等等。它还支持多种平台,包括 Windows、Linux 和 MacOS。

OpenCV Python 只是用于 Python 的原始 C++ 库的包装类。使用它,所有 OpenCV 数组结构都可以与 NumPy 数组相互转换。这使得它很容易与其他使用 NumPy 的库集成。例如,像 SciPy 和 Matplotlib 这样的库。


OpenCV的基础操作?

Opencv 可以执行以下从加载图像到调整大小的基本操作:

使用OpenCV加载图片

查看图片形状/分辨率

显示图片

调整图像大小


1. 使用OpenCV加载图片

Import cv2  
 # colored Image  
Img = cv2.imread ("Penguins.jpg",1)  
 # Black and White (gray scale)  
Img_1 = cv2.imread ("Penguins.jpg",0)

如以上代码所示,第一个要求是导入OpenCV模块。

之后,我们可以使用 imread 模块读取图像。参数中的 1 表示这是彩色图像。如果该参数的值为0,则表示要导入的图像是黑白图像。这里的图像名称是“企鹅”。很简单,对吧?


2. 查看图片形状/分辨率

我们可以使用 shape 子函数来输出图像的形状。看看下面的代码:

Import cv2  
# Black and White (gray scale)  
Img = cv2.imread ("Penguins.jpg",0)  
Print(img.shape)

图片的形状是指 NumPy 数组的形状。执行代码后,你将看到该矩阵由 768 行和 1024 列组成。


3. 显示图片

使用OpenCV显示图片非常简单和直接。思考以下图片:

import cv2  
 
# Black and White (gray scale)  
Img = cv2.imread ("Penguins.jpg",0)  
cv2.imshow("Penguins", img)  
 
cv2.waitKey(0)  
# cv2.waitKey(2000)  
cv2.destroyAllWindows()

如你所见,我们首先使用 imread 导入图像。我们需要一个输出窗口来显示这个图像,对吧?

然后,我们等待用户事件。 waitKey 使窗口保持静态,直到用户按下一个键。传入的参数是以毫秒为单位的时间。

最后,我们根据waitForKey的参数使用destroyAllWindows关闭窗口。


4. 调整图像大小

同样,调整图像大小也非常简单。这是另一个代码片段:

import cv2  
# Black and White (gray scale)  
img = cv2.imread ("Penguins.jpg",0)  
resized_image = cv2.resize(img, (650,500))  
cv2.imshow("Penguins", resized_image)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

在这里,resize 函数用于将图像大小调整为所需的形状。这里的参数是新调整大小的图像的形状。

与之前的代码相比,剩下的代码非常简单,对吗?

我相信你们对企鹅很好奇,这是我们想要输出的图片!

这是另一个向resize函数传递参数的方法。看看下面的表示方法:

Resized_image = cv2.resize(img, int(img.shape[1]/2), int(img.shape[0]/2)))

在这里,我们得到一个大小为原始图像一半的新图像。


使用OpenCV进行人脸检测

这看起来很复杂,但实际上很容易。让我带你完成整个过程,然后你会有同样的感觉。

第 1 步:考虑我们的先决条件。我们首先需要一个图像。然后,我们需要创建一个级联分类器,最后会给我们提供面部特征。

第2步:这一步使用OpenCV读取图像和特征文件。所以这一次,原始数据点是 NumPy 数组的形式。

我们所要做的就是搜索 NumPy n 维人脸数组的行值和列值。这是一个包含面部矩形坐标的数组。

第三步:最后一步是使用矩形面框显示图像。

看看下图,我以图形的形式总结了以上三个步骤,方便阅读:

非常直接明了,对吧?

python如何使用opencv

首先,如前所述,我们创建 CascadeClassifier 对象来提取面部特征。包含面部特征的 XML 文件的路径是这里的参数。

下一步是读取包含人脸的图像并使用 COLOR_BGR2GREY 将其转换为黑白。接下来,我们搜索图像的坐标。这是使用detectMultiScale 实现的。

你问的是什么坐标?它是面部矩形的坐标。 scaleFactor 用于将形状值减少 5%,直到找到人脸。所以一般来说,这个值越小,准确率就越好。

最后,这张脸被显示到窗口。


给识别的人脸添加矩形面框

逻辑很简单——就像使用 for 循环语句一样简单。看看下面的图片:

python如何使用opencv

我们使用 cv2.rectangle 定义一个方法,通过传递图像对象、轮廓框的 RGB 值和矩形的宽度等参数来创建矩形。

让我们来看看面部检测的完整代码:

import cv2  
# Create a CascadeClassifier Object  
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")  
# Reading the image as it is  
img = cv2.imread("photo.jpg") 
# Reading the image as gray scale image  
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
# Search the co-ordintes of the image  
faces = face_cascade.detectMultiScale(gray_img, scaleFactor = 1.05,  minNeighbors=5)  
for x,y,w,h in faces:  
    img = cv2.rectangle(img, (x,y), (x+w,y+h),(0,255,0),3)  
resized = cv2.resize(img, (int(img.shape[1]/7),int(img.shape[0]/7)))   
cv2.imshow("Gray", resized)  
cv2.waitKey(0)  
cv2.destroyAllWindows()

众多
,尽在python学习网,欢迎在线学习!

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享