用opencv繪制一個箭頭,沿著圓運動并留下運動軌跡(c++)。基于該例程可以簡單實現一個運動小車的模型。
using namespace cv;int main()
{// 創建一個黑色背景的圖像,大小為400*400Mat image(400, 400, CV_8UC3, Scalar(0, 0, 0));//設置箭頭的初始位置和方向Point2f arrow_center(200, 200); //箭頭中心點double arrow_angle = 0.0; //箭頭角度(弧度)// 循環處理每幀圖像while (true) {// 旋轉箭頭arrow_angle += 0.1;if (arrow_angle >= 2 * CV_PI) {arrow_angle -= 2 * CV_PI;}// 計算箭頭的頭和尾位置Point2f arrow_head(arrow_center.x + 50 * cos(arrow_angle),arrow_center.y + 50 * sin(arrow_angle));Point2f arrow_tail(arrow_center.x - 50 * cos(arrow_angle),arrow_center.y - 50 * sin(arrow_angle));// 繪制箭頭arrowedLine(image, arrow_tail, arrow_head, Scalar(0, 0, 255), 3);// 將箭頭中心向前移動10個像素arrow_center.x += 10 * cos(arrow_angle);arrow_center.y += 10 * sin(arrow_angle);// 如果箭頭越過邊界,則將其移回中央if (arrow_center.x < 0 || arrow_center.y < 0 ||arrow_center.x > image.rows || arrow_center.y > image.cols) {arrow_center.x = image.cols / 2;arrow_center.y = image.rows / 2;}// 如果應該閃爍,將箭頭顏色改為綠色,否則為紅色// 顯示圖像imshow("Arrow", image);// 等待一會兒waitKey(100);//if ((int)(arrow_angle / CV_PI * 5) % 2 == 0) {arrowedLine(image, arrow_tail, arrow_head, Scalar(0, 255, 0), 3);//}imshow("Arrow", image);}return 0;
}