在OpenCV中以正弦波移动矩形

时间:2018-11-26 10:47:49

标签: opencv image-processing

我正在编写一个程序以在定义的路径上移动矩形。我已经完成了一条直线和一条对角线,现在我想消除正弦波中的点,在其中可以给出频率和幅度。

我的直线代码是

void MainWindow::on_pushButton_Generate_clicked()
{


int velocity= MainWindowPtr->ui->horizontalSlider_speed->value();
printf("%d\n",velocity);

QTimer *timer = new QTimer;

// make the connection using the timer variable

connect(timer, &QTimer::timeout, this, &generate_video);

// start the timer object by first dereferencing that object first
timer->setInterval(velocity);
timer->start();


}

void generate_video()
{

imageBack= imread(filenameImg);
cvtColor(imageBack, imageBack, cv::COLOR_RGB2GRAY);
rectangle(imageBack,Point(initialX,initialY),Point(initialX+widthImg,initialY+heightImg),Scalar(intensity),-1,8,0);
imshow("image",imageBack);

if(MainWindowPtr->ui->radioButton_TrajLine->isChecked())
{
if(initialX>640)
initialX=0;
else
initialX+=1;
}

}

现在正弦,我正在尝试这样的事情:

 for (xSin=0;xSin<100;xSin++){
            ySin[(int)floor(xSin)]=10 + 10*sin(2*.1*3.14*xSin);
            rectangle(imageBack,Point(xSin,ySin[xSin]),Point(xSin+widthImg,ySin[xSin]+heightImg),Scalar(intensity),-1,8,0);

        }

但是什么也没发生。我正在Ubuntu上的QT中使用C语言。

1 个答案:

答案 0 :(得分:0)

您的generate_video函数每次被调用时都会生成一帧。如果希望将新代码粘贴到其中,则应像以前一样使用+ =而不是for循环,以便在调用时仅绘制一个矩形。

ySin = 10 + 10*sin(2*.1*3.14*xSin);
xSin += 1