一、计算公式
图片坐标: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}
(x−image.cols/2)2+(y−image.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;