大佬教程收集整理的这篇文章主要介绍了控制由英雄联盟中的健康栏百分比领导,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我编写了一个代码来控制英雄联盟中由健康百分比变化的领导。我使用 python 和 OCR 检测健康状况并将健康数字发送到 Arduino 以控制 LED 使其在健康度 > 80% 时延迟 3 秒闪烁,当健康度
问题在于,所有健康百分比的 LED 仅闪烁 3 秒延迟。我该怎么办 ?提前谢谢
Python 代码:
import serial
import time
import numpy as np
import cv2
from PIL import ImageGrab,Image
import os
import PyTesseract
ser = serial.serial('COM3',9600)
#This loop allows opencv to capture the screen conTinuously
while True:
img = ImageGrab.grab(bBox=[840,1020,940,1050 ])
img_np = np.array(img)
frame = cv2.cvtcolor(img_np,cv2.color_BGR2GRAY)
text = PyTesseract.image_to_String(framE)
v3=-1
if "/" in text:
x = text.split("/")
try:
v1 = int(x[0])
v2 = int(x[1])
v3 = int((v1/v2)*100)
if v3<=100:
print(str(v3))
v4= str(abs(v3))
ser.write(b'v4')
time.sleep(0.1)
time.sleep(2)
except:
pass
cv2.imshow("Screen",framE)
if cv2.waitKey(1) == 27:
break
cv2.destroyAllwindows()
Arduino 代码
const int led=8;
String value;
int i;
voID setup()
{
serial.begin(9600);
pinMode(led,OUTPUT);
serial.println("Connection established...");
}
voID loop()
{
while (serial.available())
{
value = serial.read();
i = value.toInt();
if (100 >= i > 80)
{
digitalWrite(led,HIGH);
delay(3000);
digitalWrite(led,LOW);
}
else if (0 <= i < 80)
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
}
else { digitalWrite(led,LOW);
}
}
}
在此处输入代码
我假设在 ser.write(b'v4')
中您不需要“'”,因为现在您发送的只是字符串“v4”,而不管它的值如何。
serial.read()
仅读取 1 个字节的数据。如果在 delay()
期间传入更多字节,仍会读取最旧的字节。这意味着您的串行端口可能被大于 80 的值完全填满。
您应该做以下 2 件事:
以上是大佬教程为你收集整理的控制由英雄联盟中的健康栏百分比领导全部内容,希望文章能够帮你解决控制由英雄联盟中的健康栏百分比领导所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。