原视频是320*240尺寸,X坐标中间位置是160,cpt.x是目标在画面中的X坐标,20是允许的像素误差
基本思想就是160减去cpt.x,以便获知 需要移动的方向和步距,tmenber 控制不进电机速度
视频:
https://www.bilibili.com/video/av41467239
void Thread_x::run() ## 负责移动X坐标的线程
{
DEV_Digital_Write(M1_ENABLE_PIN, 0); ## 启用1号电机
int tmenber = 8000;
while(1){
QThread:: usleep(tmenber);
if ( 160-cpt.x >= 20){
DEV_Digital_Write(M1_DIR_PIN, 0); ## 1号电机 正旋转
DEV_Digital_Write(M1_STEP_PIN, 1);
DEV_Delay_ms(0.5);
DEV_Digital_Write(M1_STEP_PIN, 0);
DEV_Delay_ms(0.5);
}
if ( 160-cpt.x <= -20){
DEV_Digital_Write(M1_DIR_PIN, 1); ## 1号电机 反旋转
DEV_Digital_Write(M1_STEP_PIN, 1);
DEV_Delay_ms(0.5);
DEV_Digital_Write(M1_STEP_PIN, 0);
DEV_Delay_ms(0.5);
}
}
这个算法简单 但是有个重大缺陷,tmenber = 8000 仅适合移动缓慢的目标,tmenber = 100适合快速移动的目标。如何让算法能自己动态调整呢?
我找到了这篇文章:
一个简单的导弹自动追踪以及实时图片旋转算法,Python-pygame代码实现
https://www.cnblogs.com/halfsand/p/7976636.html
自己是个文盲 看不懂,哪位大神可以帮改改代码??