点和矩形的位置关系有三种情况:
1、点在矩形内
2、点在矩形边界上
3、点在矩形外
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
//创建图像
cv::Mat srcImage = cv::Mat(240,320,CV_8UC3,cv::Scalar(75,75,75));
//矩形
cv::Rect rect(60,20,200,200);
cv::rectangle(srcImage, rect,cv::Scalar(175,255,75),1,CV_AA,0);
//点
cv::Point point(60,20);
cv::circle(srcImage, point,5, cv::Scalar(255, 75, 175), -1, CV_AA, 0);
//判断某点与矩形的位置关系
if (point.x>rect.tl().x&&point.x<rect.br().x&&point.y>rect.tl().y&&point.y<rect.br().y)
{
std::cout << "点在矩形内" << std::endl;
}
else if ((point.x==rect.tl().x|| point.x==rect.br().x) &&(point.y>=rect.tl().y&&point.y<=rect.br().y))
{
std::cout << "点在矩形边界上" << std::endl;
}
else if ((point.y==rect.tl().y||point.y==rect.br().y)&&(point.x>=rect.tl().x&&point.x<=rect.br().x))
{
std::cout << "点在矩形边界上" << std::endl;
}
else
{
std::cout << "点在矩形外" << std::endl;
}
cv::imshow("主窗口", srcImage);
cv::waitKey();
//销毁所有窗口
cv::destroyAllWindows();
return 0;
}