使用opencv计算图片上任意一点到图片中心点距离为半径绘制圆形,计算FOV

1 篇文章 0 订阅

一、计算公式
图片坐标:Point(x,y)
半径 :r = ( x − i m a g e . c o l s / 2 ) 2 + ( y − i m a g e . r o w s / 2 ) 2 \sqrt {(x - image.cols/2)^2 + (y - image.rows/2)^2} (ximage.cols/2)2+(yimage.rows/2)2
在这里插入图片描述
二、以 R R R 为半径在图像上绘制圆形,如下图所示:
在这里插入图片描述
三、实现代码

	cv::Mat image = cv::imread("D:\\Ttest\\test2\\1.bmp");
	int nRadius = std::sqrt(std::pow((x - (image.cols / 2)), 2) + std::pow((y - (image.rows / 2)), 2));
	cv::Point centerPoint = cv::Point(image.cols / 2, image.rows / 2);	//中心点坐标
	cv::Scalar color = cv::Scalar(15, 185, 255);//设置绘制圆形部分为颜色
	cv::circle(image, centerPoint, nRadius, color, -1);

	//计算黄色区域像素点
	int nCount = 0;
	for (int y = 0; y < image.rows; y++)
	{
		for (int x = 0; x < image.cols; x++)
		{
			Vec3b pixel = image.at<Vec3b>(y, x);
			int B = pixel[0];
			int G = pixel[1];
			int R = pixel[2];
			if ((B == 15) && (G == 185) && (R == 255))
			{
				nCount++;
			}
		}
	}
	std::cout << nCount << "\n";

	float fov = (nCount*1.0) / ((image.rows * image.cols) * 1.0);
	std::cout << fov;
  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳跃的曲奇饼

你的鼓励是我创造更大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值