首页 > 编程学习 > OpenCV:判断点是否在矩形内

OpenCV:判断点是否在矩形内

发布时间:2022/5/14 15:40:49

小姐姐都加我一下我是国家分配的男朋友

点和矩形的位置关系有三种情况:

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;
}

  

 

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000