提交 a3c5fe4e 编写于 作者: W wizardforcel

2019-11-20 23:51:35

上级 b03d1565
......@@ -6,7 +6,7 @@
使用 OpenCV 进行汽车追踪
在本教程中,我们将研究使用 [haar 功能](https://en.wikipedia.org/wiki/Haar-like_features)的车辆跟踪。 我们有一个经过训练的 haar 级联文件。
在本教程中,我们将研究使用 [haar 特征](https://en.wikipedia.org/wiki/Haar-like_features)的车辆跟踪。 我们有一个经过训练的 haar 级联文件。
该程序将检测感兴趣的区域,将其分类为汽车,并在其周围显示矩形。
......@@ -187,4 +187,4 @@ detectCars('road.avi')
* [机器人技术,计算机视觉,语音识别等](https://pythonspot.com/robotics/)
[下载计算机视觉示例+课程](https://pythonspot.com/download-vision-examples/)
\ No newline at end of file
[下载计算机视觉示例和课程](https://pythonspot.com/download-vision-examples/)
\ No newline at end of file
......@@ -4,7 +4,7 @@
在本教程中,您将学习如何在 Python 中应用人脸检测。 作为输入视频,我们将使用 Google Hangouts 视频。 网路上有大量的 Google Hangouts 视讯,在这些视讯中,人脸通常大到足以让软体侦测到人脸。
使用 OpenCV(Open Computer Vision)库实现面部检测。 最常见的面部检测方法是[提取级联](https://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#haar-feature-based-cascade-classifier-for-object-detection)已知该技术可以很好地与人脸检测配合使用。 您需要将级联文件(包含在 OpenCV 中)放在程序所在的目录中。
使用 OpenCV(Open Computer Vision)库实现面部检测。 最常见的面部检测方法是[ haar 级联](https://docs.opencv.org/modules/objdetect/doc/cascade_classification.html#haar-feature-based-cascade-classifier-for-object-detection)已知该技术可以很好地与人脸检测配合使用。 您需要将级联文件(包含在 OpenCV 中)放在程序所在的目录中。
## Python OpenCV 和视频
......@@ -32,7 +32,7 @@ while rval:
```
执行后,您将看到没有声音播放的视频。 (OpenCV 不支持声音)。 在 while 循环内,我们将每个视频帧包含在可变帧内。
执行后,您将看到没有声音播放的视频。(OpenCV 不支持声音)。在 while 循环内,我们将每个视频帧包含在可变帧内。
## 使用 OpenCV 进行人脸检测
......
......@@ -3,6 +3,7 @@
> 原文: [https://pythonspot.com/object-detection-with-templates/](https://pythonspot.com/object-detection-with-templates/)
**模板匹配**是一种用于查找与补丁(模板)相似的图像区域的技术。
它的应用可以是[机器人](https://pythonspot.com/robotics)或制造业。
## 简介
......@@ -17,9 +18,9 @@
要找到它们,我们都需要:
* **源图像(S)**:在其中查找匹配项的空间
* **源图像(`S`)**:在其中查找匹配项的空间
* **模板图像(T)**:模板图像
* **模板图像(`T`)**:模板图像
模板图像`T`在源图像`S`上滑动(在源图像上移动),并且程序尝试使用统计信息查找匹配项。
......@@ -76,13 +77,14 @@ templateGray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
```
我们使用 **cv2.matchTemplate** (图像,模板,方法)方法查找图像中最相似的区域。 第三个参数是[统计方法](https://docs.opencv.org/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate)
我们使用`cv2.matchTemplate(image, template, method)`方法查找图像中最相似的区域。第三个参数是[统计方法](https://docs.opencv.org/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate)
![Template Matching](img/671697da89293504fef04cfadad29c6b.jpg)
为您的应用选择正确的统计方法。`TM_CCOEFF`(右),`TM_SQDIFF`(左)
此方法具有六个匹配方法:CV_TM_SQDIFF,CV_TM_SQDIFF_NORMED,CV_TM_CCORR,CV_TM_CCORR_NORMED,CV_TM_CCOEFF 和 CV_TM_CCOEFF_NORMED。
此方法具有六个匹配方法:`CV_TM_SQDIFF``CV_TM_SQDIFF_NORMED``CV_TM_CCORR``CV_TM_CCORR_NORMED``CV_TM_CCOEFF``CV_TM_CCOEFF_NORMED`
这是完全不同的[统计比较方法](https://docs.opencv.org/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate)
最后,我们获得矩形变量并显示图像。
......@@ -91,6 +93,6 @@ templateGray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
模板匹配不是比例不变的,也不是旋转不变的。 这是一种非常基本和直接的方法,可在其中找到最相关的区域。 因此,这种对象检测方法取决于您要构建的应用程序的类型。 对于非比例和旋转变化的输入,此方法效果很好。
您可能会喜欢:[机器人技术](https://pythonspot.com/robotics)[具有级联](https://pythonspot.com/car-tracking-with-cascades/)的汽车跟踪。
您可能会喜欢:[机器人技术](https://pythonspot.com/robotics)[使用级联](https://pythonspot.com/car-tracking-with-cascades/)的汽车跟踪。
[下载计算机视觉示例+课程](https://pythonspot.com/download-vision-examples/)
\ No newline at end of file
[下载计算机视觉示例和课程](https://pythonspot.com/download-vision-examples/)
\ No newline at end of file
# Python 和 Netflix 点赞图标
# Python 和 Netflix 点赞缩略图
> 原文: [https://pythonspot.com/netflix-like-thumbnails-with-python/](https://pythonspot.com/netflix-like-thumbnails-with-python/)
[Netflix](https://techblog.netflix.com/2016/03/extracting-image-metadata-at-scale.html) 的启发,我们决定实施对焦点算法。 如果您在移动网站上使用生成的缩略图,则可能会增加 YouTube 视频的点击率(CTR)。
无论如何,这是一个有趣的实验。
## 焦点
......@@ -14,14 +15,14 @@
![Netflix like Thumbnails Python](img/4ff0874e193357fd06d6aca13d7dc8c4.jpg)
Netflix like Thumbnails Python. Source: Google videos.
Python Netflix 点赞缩略图。来源:Google 视频。
从要用作缩略图的快照图像开始。 我们使用 Haar 功能查找图像中最有趣的区域。 Haar 级联文件可以在以下位置找到:
* [https://raw.githubusercontent.com/Itseez/opencv/master/data/lbpcascades/lbpcascade_frontalface.xml](https://raw.githubusercontent.com/Itseez/opencv/master/data/lbpcascades/lbpcascade_frontalface.xml)
* [https://github.com/adamhrv/HaarcascadeVisualizer](https://github.com/adamhrv/HaarcascadeVisualizer)
将这些文件下载到/ data /目录中。
将这些文件下载到`/data/`目录中。
```py
......@@ -41,9 +42,9 @@ cv2.waitKey(0);
```
我们使用 **cv2.CascadeClassifier()**加载 haar 级联文件,并使用 **cv2.imread()**
加载图像,然后 **bodyCascade.detectMultiScale()** 使用已加载的 Haar 功能检测感兴趣的区域。
使用 **cv2.imwrite()**将图像另存为缩略图,最后显示图像并用矩形突出显示感兴趣的区域。 运行后,您将获得用于移动网页或应用程序的漂亮缩略图。
我们使用`cv2.CascadeClassifier()`加载 haar 级联文件,并使用`cv2.imread()`加载图像,然后`bodyCascade.detectMultiScale()`使用已加载的 Haar 功能检测感兴趣的区域。
使用`cv2.imwrite()`将图像另存为缩略图,最后显示图像并用矩形突出显示感兴趣的区域。 运行后,您将获得用于移动网页或应用程序的漂亮缩略图。
如果您还想同时检测身体和面部,可以使用:
......
......@@ -24,7 +24,7 @@ x = randint(1,9)
```
randint()函数将选择一个介于 1 到 10 之间的伪随机数。然后,我们必须继续直到找到正确的数字为止:
`randint()`函数将选择一个介于 1 到 10 之间的伪随机数。然后,我们必须继续直到找到正确的数字为止:
```py
guess = -1
......
......@@ -14,7 +14,7 @@ Pygame Python
您将得到一个与右边的程序相似的程序:
游戏总是以与此类似的顺序( _**伪代码**_ )开始:
游戏总是以与此类似的顺序(**伪代码**)开始:
```py
initialize()
......@@ -83,7 +83,7 @@ if __name__ == "__main__" :
```
Pygame 程序以构造函数 **init** ()开始。 完成后,将调用 on_execute()。 此方法运行游戏:更新事件,更新屏幕。 最后,使用 on_cleanup()对游戏进行初始化。
Pygame 程序以构造函数`__init__()`开始。完成后,将调用`on_execute()`。此方法运行游戏:更新事件,更新屏幕。最后,使用`on_cleanup()`对游戏进行初始化。
在初始化阶段,我们设置屏幕分辨率并启动 Pygame 库:
......@@ -101,7 +101,7 @@ self._image_surf = pygame.image.load("pygame.png").convert()
```
这不会将图像绘制到屏幕上,而是发生在 on_render()中。
这不会将图像绘制到屏幕上,而是发生在`on_render()`中。
```py
def on_render(self):
......@@ -110,6 +110,6 @@ def on_render(self):
```
blit 方法将图像(image_surf)绘制到坐标(x,y)。 在 Pygame 中,坐标从(0,0)左上角开始到(wind0wWidth,windowHeight)。 方法调用 _**pygame.display.flip()**_ 更新屏幕。
`blit`方法将图像(`image_surf`)绘制到坐标`(x, y)`。 在 Pygame 中,坐标从`(0, 0)`左上角开始到`(wind0wWidth, windowHeight)`。 方法调用`pygame.display.flip()`更新屏幕。
继续[下一个教程](https://pythonspot.com/snake-with-pygame/),并学习如何添加游戏逻辑和构建游戏:-)
\ No newline at end of file
继续[下一个教程](https://pythonspot.com/snake-with-pygame/),并学习如何添加游戏逻辑和构建游戏 :-)
\ No newline at end of file
......@@ -10,7 +10,7 @@
## 入门:基本结构和事件处理。
我们定义了一个 Player 类,它可以保持玩家在屏幕上的位置及其移动的速度。 另外,我们定义 Player 实例可以执行的动作(动作):
我们定义了一个`Player`类,它可以保持玩家在屏幕上的位置及其移动的速度。 另外,我们定义`Player`实例可以执行的动作(动作):
```py
class Player:
......@@ -321,7 +321,7 @@ if __name__ == "__main__" :
![python snake](img/c2a6a40115692ff004dc8fce43168e64.jpg)
python snake
python 贪食蛇
## 游戏逻辑
......@@ -500,7 +500,7 @@ if __name__ == "__main__" :
```
因此,我们必须添加游戏逻辑。 要知道蛇的位置是否与苹果的位置匹配,我们必须进行 _ 碰撞检测 _。 这只是意味着要使蛇的坐标与苹果的坐标相交。 我们创建一个新方法来做到这一点:
因此,我们必须添加游戏逻辑。 要知道蛇的位置是否与苹果的位置匹配,我们必须进行碰撞检测。 这只是意味着要使蛇的坐标与苹果的坐标相交。 我们创建一个新方法来做到这一点:
```py
def isCollision(self,x1,y1,x2,y2,bsize):
......@@ -511,9 +511,9 @@ def isCollision(self,x1,y1,x2,y2,bsize):
```
给定其块大小 bsize,如果坐标(x1,y1)与(x2,y2)相交,则它将返回 True。 我们调用此方法来确定蛇是否与苹果碰撞。 我们需要检查整个蛇,而不仅是头部,因为我们不希望苹果的新位置位于蛇的某个位置。 我们使用相同的 isCollision 方法来确定蛇是否与自身碰撞(=输掉游戏)。
给定其块大小`bsize`,如果坐标`(x1, y1)``(x2, y2)`相交,则它将返回`True`。 我们调用此方法来确定蛇是否与苹果碰撞。 我们需要检查整个蛇,而不仅是头部,因为我们不希望苹果的新位置位于蛇的某个位置。 我们使用相同的`isCollision`方法来确定蛇是否与自身碰撞(等于输掉游戏)。
_ 完整来源:_
完整来源:
```py
......@@ -695,6 +695,6 @@ if __name__ == "__main__" :
## 结论:
您学习了如何使用 Python 创建游戏蛇以及碰撞检测,图像加载和事件处理等概念。 可以向这个小玩具游戏添加很多东西,但这只是一个非常简单的示例。 :-)
您学习了如何使用 Python 创建游戏蛇以及碰撞检测,图像加载和事件处理等概念。 可以向这个小玩具游戏添加很多东西,但这只是一个非常简单的示例。:-)
[下一教程](https://pythonspot.com/maze-in-pygame/)
\ No newline at end of file
......@@ -6,7 +6,7 @@
## 入门:基本结构和事件处理。
我们定义了一个 Player 类,它可以保持玩家在屏幕上的位置及其移动的速度。 另外,我们定义 Player 实例可以执行的动作(动作):
我们定义了一个`Player`类,它可以保持玩家在屏幕上的位置及其移动的速度。 另外,我们定义`Player`实例可以执行的动作(动作):
```py
class Player:
......@@ -283,6 +283,6 @@ if __name__ == "__main__" :
## 结论
您学习了如何在 Python 中创建 2d 迷宫。 现在,您可能想要添加在上一教程中显示的碰撞检测。 因为我们已经解释了这个概念,所以我们不再赘述-)
您学习了如何在 Python 中创建 2d 迷宫。 现在,您可能想要添加在上一教程中显示的碰撞检测。 因为我们已经解释了这个概念,所以我们不再赘述 :-)
[下一个教程:Pygame 的 AI](/snake-ai-in-pygame/)
\ No newline at end of file
......@@ -8,7 +8,7 @@
## 添加计算机玩家:
我们使用名为 Computer 的新类扩展了代码,它将成为我们的计算机玩家。 这包含绘制和移动计算机蛇的例程。
我们使用名为`Computer`的新类扩展了代码,它将成为我们的计算机玩家。 这包含绘制和移动计算机蛇的例程。
```py
class Computer:
......@@ -379,7 +379,7 @@ if __name__ == "__main__" :
![python snake](img/03294f86324be9f10d0065240bd181ff.jpg)
python snake
python 贪食蛇
## 结论
......
......@@ -6,14 +6,14 @@
## 移动
左右移动与上一教程类似,只是意味着更改玩家的(x,y)位置。 对于跳跃,我们使用经典力学中的公式:
左右移动与上一教程类似,只是意味着更改玩家的`(x, y)`位置。 对于跳跃,我们使用经典力学中的公式:
```py
F = 1/2 * m * v^2
```
其中 F 是向上/向下的力,m 是物体的质量,v 是速度。 速度会随着时间的推移而下降,因为在此模拟中,当玩家跳跃时速度不会增加更多。 如果玩家到达地面,则跳跃结束。 在 Python 中,我们设置了一个变量 _isjump_ 来指示玩家是否在跳跃。 如果是玩家,则其位置将根据以上公式进行更新。
其中`F`是向上/向下的力,`m`是物体的质量,`v`是速度。 速度会随着时间的推移而下降,因为在此模拟中,当玩家跳跃时速度不会增加更多。 如果玩家到达地面,则跳跃结束。 在 Python 中,我们设置了一个变量`isjump`来指示玩家是否在跳跃。 如果是玩家,则其位置将根据以上公式进行更新。
完整代码:
......@@ -131,4 +131,4 @@ if __name__ == "__main__" :
```
如果要跳跃对象,只需将它们添加到屏幕上,进行碰撞检测,如果碰撞为 true,则重置跳跃变量。
\ No newline at end of file
如果要跳跃对象,只需将它们添加到屏幕上,进行碰撞检测,如果碰撞为`true`,则重置跳跃变量。
\ No newline at end of file
......@@ -4,7 +4,7 @@
Google 具有出色的语音识别 API。 该 API 将语音文本(麦克风)转换为书面文本(Python 字符串),即语音到文本。 您只需在麦克风中讲话即可,Google API 会将其翻译成书面文字。 该 API 对于英语具有出色的效果。
Google 还创建了 JavaScript Web Speech API,因此您可以根据需要在 JavaScript 中识别语音,以下是此链接: [https://www.google.com/intl/zh-CN/chrome/demos/speech.html](https://www.google.com/intl/en/chrome/demos/speech.html "Google Web Speech ") 。 要在网络上使用它,您将需要 Google Chrome 25 版或更高版本。
Google 还创建了 JavaScript Web Speech API,因此您可以根据需要在 JavaScript 中识别语音,以下是此链接:[https://www.google.com/intl/zh-CN/chrome/demos/speech.html](https://www.google.com/intl/en/chrome/demos/speech.html)。 要在网络上使用它,您将需要 Google Chrome 25 版或更高版本。
## 安装
......@@ -30,7 +30,8 @@ sudo pip3 install SpeechRecognition
该程序将记录来自麦克风的音频,将其发送到语音 API 并返回 Python 字符串。
使用语音识别模块记录音频,该模块将包括在程序顶部。 其次,我们将录制的语音发送到 Google 语音识别 API,然后该 API 返回输出。
**r.recognize_google(audio)**返回一个字符串。
`r.recognize_google(audio)`返回一个字符串。
```py
......
......@@ -2,7 +2,7 @@
> 原文: [https://pythonspot.com/personal-assistant-jarvis-in-python/](https://pythonspot.com/personal-assistant-jarvis-in-python/)
我认为在 [**Python**](https://pythonspot.com)中创建**个人助理**很酷。 如果您喜欢电影,可能已经听说过 A.I. Jarvis。 钢铁侠电影中的角色 在本教程中,我们将创建 [**机器人**。](https://pythonspot.com/robotics)
我认为在 [**Python**](https://pythonspot.com) 中创建**个人助理**很酷。 如果您喜欢电影,可能已经听说过 A.I. Jarvis。 钢铁侠电影中的角色 在本教程中,我们将创建 [**机器人**](https://pythonspot.com/robotics)
我要拥有的功能是:
......@@ -24,7 +24,7 @@
### 以语音回答(文字转语音)
各种 [**API 和程序可用于文本到语音的应用程序**](https://pythonspot.com/speech-engines-with-python-tutorial/)。Espeak 和 pyttsx 开箱即用,但听起来很机器人。我们决定使用 Google 文字到语音 API gTTS。
各种 **API 和程序**可用于[文本到语音的应用程序](https://pythonspot.com/speech-engines-with-python-tutorial/)。Espeak 和 pyttsx 开箱即用,但听起来很机器人。我们决定使用 Google 文字到语音 API gTTS。
```py
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册