一、计算公式 图片坐标: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(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;

推荐链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。