看到有人分享 Python 抖音机器人,论如何在抖音上找到漂亮小姐姐? (github.com),Git Clone 下来,发现由于腾讯云人脸识别的接口无法连接,导致截图完停止,不继续往下运行了,没啃下来官方提供的教程(Flag:以后会啃下来的)。于是自己使用 OpenCV 重新写了一个 Python 脚本,不过是识别“猫猫”的哦。
特性
- 自动翻页
- 猫脸识别
- 自动点赞
原理
- 打开抖音 APP,进入主界面;
- 获取手机截图;
- 使用 OpenCV 提供的 xml 文件[1]进行检测;
- 当检测到是猫猫时,自动点赞;
- 滑到下一页。重复上述步骤。
使用教程
- Python 版本 3.9.16(理论上其他的也可以);
- Anaconda 安装和虚拟环境创建[2];
- adb 安装[2];
- 下载 OpenCV 提供的 xml 文件[1]。
源码(注释完全版)
1 | import subprocess #用于执行 shell 命令 |
sacleFator
:这个参数控制图像金字塔的缩放比例。较小的scaleFactor
值会导致更多的金字塔层级,从而增加检测准确性,但也会增加计算量,使检测速度变慢。较大的scaleFactor
值则会减少金字塔层级和计算量,提高检测速度,但可能降低检测准确性。通常情况下,scaleFactor
的值在 1.01 到 1.5 之间。
minNeighbors
:这个参数控制检测到的物体的矩形框之间应该有多少个相邻矩形框。较大的minNeighbors
值可以减少误报率(错误检测),但可能导致一些真实物体被错过(降低检测准确性)。较小的minNeighbors
值可能会增加误报率,但也可能提高检测准确性。这个参数的最佳值取决于具体的应用场景和数据集。通常情况下,minNeighbors
的值在 3 到 10 之间。
minSize
:这个参数用于设置检测到的物体的最小尺寸(宽度和高度)。较大的minSize
值可以减少误报率,但可能导致一些较小的真实物体被错过。较小的minSize
值可能会增加误报率,但能检测到更小的物体。设置适当的minSize
取决于你希望检测到的物体的实际尺寸和应用场景。例如,如果你只关心较大的猫脸,可以将minSize
设置为一个较大的值。
input swipe 540 1500 540 1000 100
:这部分命令是要在设备上执行的实际 shell 命令。input
是一个 Android shell 命令,用于模拟用户输入。swipe
是input
命令的一个子命令,用于模拟滑动操作。接下来的四个数字参数表示滑动操作的起点和终点坐标:(500, 1500)
是滑动的起点,(500, 80)
是滑动的终点。坐标系统的原点位于屏幕的左上角,x 轴向右延伸,y 轴向下延伸。100
是指延时 100ms,从第一个坐标滑到第二个坐标用时 100ms。
测试
- 抖音 Up 主:怀特喵先生
- 抖音 Up 主:电波波波
总结
使用的haarcascade_frontalcatface.xml
这个模型,必须截图截到猫的正脸才可以,而且在视频播放时截图是随机的,可能这个镜头是猫猫的正脸,下个镜头就不是了,具有较大的不确定性。虽然没有达到 100% 识别率,但这个数据已经很好了。
下一步工作
接入腾讯 Ai 人脸识别,对人脸进行检测分析。
参考
[1] opencv/data/haarcascades at master · opencv/opencv (github.com)
[2] ADB 与 Anaconda 使用 | Story Begins…… (storybeginswhen.icu)
- 本文标题:使用 OpenCV 自动点赞抖音小猫
- 创建时间:2023-03-15 09:31:19
- 本文链接:2023/03/15/037-使用-OpenCV-自动点赞抖音小猫/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!