使用 C++ opencv 在黑白图像中查找对象的中心点
Find the center point of an object in a black-white image using C++ opencv
我有下面的图片。我的目标是找到对象中心点的 x,y 值。我试过 Image moments 但找不到任何 x,y 值。
我该怎么做?
中心点应该是红点或接近它的东西。
在您发布的 link 中,您可以在此处找到图片的中心:
/// Get the mass centers:
vector<Point2f> mc( contours.size() );
for( int i = 0; i < contours.size(); i++ )
{ mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); }
您可以这样找到图像的中心:
#include "opencv2\opencv.hpp"
using namespace cv;
int main()
{
Mat1b gray = imread("path_to_image", IMREAD_GRAYSCALE);
Moments mu = moments(gray, true);
Point center;
center.x = mu.m10 / mu.m00;
center.y = mu.m01 / mu.m00;
Mat3b res;
cvtColor(gray, res, CV_GRAY2BGR);
circle(res, center, 2, Scalar(0,0,255));
imshow("Result", res);
waitKey();
return 0;
}
生成的图像是:
我有下面的图片。我的目标是找到对象中心点的 x,y 值。我试过 Image moments 但找不到任何 x,y 值。 我该怎么做?
中心点应该是红点或接近它的东西。
在您发布的 link 中,您可以在此处找到图片的中心:
/// Get the mass centers:
vector<Point2f> mc( contours.size() );
for( int i = 0; i < contours.size(); i++ )
{ mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); }
您可以这样找到图像的中心:
#include "opencv2\opencv.hpp"
using namespace cv;
int main()
{
Mat1b gray = imread("path_to_image", IMREAD_GRAYSCALE);
Moments mu = moments(gray, true);
Point center;
center.x = mu.m10 / mu.m00;
center.y = mu.m01 / mu.m00;
Mat3b res;
cvtColor(gray, res, CV_GRAY2BGR);
circle(res, center, 2, Scalar(0,0,255));
imshow("Result", res);
waitKey();
return 0;
}
生成的图像是: