- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章python微信跳一跳系列之棋子定位颜色识别由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
python微信跳一跳,前言 。
这是python玩跳一跳系列博文中一篇,主要内容是用颜色识别的方法来进行跳跳小人的定位.
颜色识别 。
过观察,我们可以发现,尽管背景和棋子在不停的变化,但跳跳小人的形状和颜色基本保持不变,对于形状,我们在上一篇博文中已经采用模板匹配的方法来进行识别定位,效果非常好。这一篇博文就来对颜色识别进行验证.
基本思路 。
用hsv颜色空间对输入的图片进行处理,用某种指定的颜色进行蒙版mask处理进而得到二值化的黑白图像,膨胀和腐蚀后去除噪点,对轮廓区域进行计算,画出圆心和质心位置,并实现动态的跟踪。 其基本的步骤如下: 设定需要的颜色阈值 读入图像 转化为hsv图像 采用颜色的蒙版进行二值化处理得到黑白图像 降噪和轮廓处理 绘出圆心 。
python3.6代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import
cv2
import
numpy as np
import
time
lower_blue
=
np.array([
115
,
75
,
75
])
#设定蓝色的阈值
upper_blue
=
np.array([
130
,
255
,
125
])
frame
=
cv2.imread(
'001.png'
)
hsv
=
cv2.cvtcolor(frame, cv2.color_bgr2hsv)
#转到hsv空间
mask_blue
=
cv2.inrange(hsv, lower_blue, upper_blue)
cnts
=
cv2.findcontours(mask_blue, cv2.retr_external, cv2.chain_approx_simple)[
-
2
]
if
len
(cnts) >
0
:
c
=
max
(cnts, key
=
cv2.contourarea)
#找到面积最大的轮廓
((x, y), radius)
=
cv2.minenclosingcircle(c)
#确定面积最大的轮廓的外接圆
center
=
(
int
(x),
int
(y))
cv2.circle(frame, center,
int
(radius
+
10
), (
0
,
0
,
255
),
3
)
#画出圆心
cv2.circle(frame, center,
3
, (
0
,
0
,
255
),
-
1
)
cv2.circle(hsv, center,
int
(radius
+
10
), (
255
,
255
,
255
),
3
)
#画出圆心
cv2.circle(hsv, center,
3
, (
0
,
0
,
255
),
-
1
)
cv2.circle(mask_blue, center,
int
(radius
+
10
), (
255
,
255
,
255
),
3
)
#画出圆心
cv2.circle(mask_blue, center,
3
, (
0
,
0
,
255
),
-
1
)
cv2.imshow(
'frame'
,frame)
cv2.imshow(
'hsv'
,hsv)
cv2.imshow(
'mask'
,mask_blue)
if
cv2.waitkey(
0
)
=
=
ord
(
'q'
):
cv2.destroyallwindows()
|
静态图片识别效果 。
左边是原始图片,中间是蒙版后的二值图,右边就是hsv图像,识别效果还是不错的。 可以看到,目前选定的颜色基本可以将小人的轮廓全部筛选出来,其最大的部分恰好就在底盘,圆心位置正是我们需要的.
动态实时识别 。
我们给出动态图,可以看一下动态实时识别的效果.
评价 。
采用颜色来对跳跳小人的底盘位置进行识别和定位效果不错,而且这种方法和手机的像素及屏幕大小无关,真正实现了各平台通用.
预告 。
在下一篇博文中,我会对github上wechat-jump所采用的颜色遍历方法进行验证,敬请期待.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://blog.csdn.net/m0_37606112/article/details/79036085 。
最后此篇关于python微信跳一跳系列之棋子定位颜色识别的文章就讲到这里了,如果你想了解更多关于python微信跳一跳系列之棋子定位颜色识别的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在阅读 java swing,但在理解它时遇到问题。 Color 是一个类吗? Color[] col= {Color.RED,Color.BLUE}; 这在java中是什么意思? 最佳答案 Is
我正在研究用 python 编写的 pacman 程序。其中一个模块是处理吃 bean 游戏的图形表示。这当然是一些主机颜色。列表如下: GHOST_COLORS = [] ## establishe
本网站:http://pamplonaenglishteacher.com 源代码在这里:https://github.com/Yorkshireman/pamplona_english_teache
我最近将我的手机更新为 Android Marshmallow 并在其上运行了我现有的应用程序,但注意到颜色行为有所不同:将更改应用到 View (可绘制)的背景时,共享相同背景的所有 View (引
所有 X11/w3c 颜色代码在 Android XML 资源文件格式中是什么样的? I know this looks a tad ridiculous as a question, but giv
试图让 ffmpeg 创建音频波形,同时能够控制图像大小、颜色和幅度。我已经尝试过这个(以及许多变体),但它只是返回无与伦比的 "。 ffmpeg -i input -filter_complex "
我很好奇你是否有一些关于 R 中颜色酿造的技巧,对于许多独特的颜色,以某种方式使图表仍然好看。 我需要大量独特的颜色(至少 24 种,可能需要更多,~50 种)用于堆叠区域图(所以不是热图,渐变色不起
我看到的许多 WPF 示例和示例似乎都有硬编码的颜色。这些指南 - http://msdn.microsoft.com/en-us/library/aa350483.aspx建议不要硬编码颜色。在构建
我想更改文件夹的默认蓝色 如何设置? 最佳答案 :hi Directory guifg=#FF0000 ctermfg=red 关于Vim NERDTree 颜色,我们在Stack Overflow上
是否有关于如何将任意字符串哈希为 RGB 颜色值的最佳实践?或者更一般地说:3 个字节。 你问:我什么时候需要这个?这对我来说并不重要,但想象一下任何 GitHub 上的那些管图 network pa
我正在尝试将默认颜色设置为自定义窗口小部件。 这是有问题的代码。 class ReusableCard extends StatelessWidget { ReusableCard({this.
import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.Ta
我有一个 less 文件来定义一堆颜色/颜色。每个类名都包含相关颜色的名称,例如 .colourOrange{..} 或 .colourBorderOrange{..} 或 navLeftButtOr
我有一个RelativeLayout,我需要一个黑色背景和一个位于其中间的小图像。我使用了这段代码: 其中@drawable/bottom_box_back是: 这样我就可以将图像居中了。但背
我需要设置 浅色 的 JPanel 背景,只是为了不覆盖文本(粗体黑色)。 此刻我有这个: import java.util.Random; .... private Random random =
我正在尝试制作一个自定义文本编辑器,可以更改特定键入单词的字体和颜色。如何更改使用光标突出显示的文本的字体和/或颜色? 我还没有尝试过突出显示部分。我尝试获取整个 hEdit(HWND) 区域并更改字
我想改变我整个应用程序的颜色。 在我的 AndroidManfiest.xml 中,我有正确的代码: 在 values 文件夹中,我有 app_theme.xml: @style/MyAc
是否可以使用 android 数据绑定(bind)从 xml 中引用颜色? 这很好用: android:textColor="@{inputValue == null ? 0xFFFBC02D : 0
有没有办法在 Android 应用程序中设置“空心”颜色? 我的意思是我想要一个带有某种背景的框,而文本实际上会导致背景透明。换句话说,如果整个 View 在蓝色背景上,文本将是蓝色的,如果它是红色的
我用CGContextStrokePath画在白色背景图片中的一条直线上,描边颜色为红色,alpha为1.0画线后,为什么点不是(255, 0, 0),而是(255, 96, 96)为什么不是纯红色?
我是一名优秀的程序员,十分优秀!