我是图像处理和开发的新手。我有图像的像素坐标。通过连接每个坐标可以得到一个三角形。我想提取给定坐标像素内的像素(三角形内的像素)
坐标如下。
1(x,y) -> (146 , 548)
2(x,y) -> (155, 548)
3(x,y) -> (149.6 , 558.1)
我如何获取上述坐标的入站像素。任何帮助表示赞赏。谢谢。
最佳答案
您应该在图像上应用蒙版。
示例代码:
首先你应该加载你的图像:
//load default image
Mat image = cv::imread("/home/fabio/code/lena.jpg", cv::IMREAD_GRAYSCALE);
然后为您的图像创建一个蒙版并将三角形点应用于蒙版。
//mask image definition
cv::Mat mask = cv::Mat::zeros(image.size(), image.type());
//triangle definition (example points)
vector<Point> points;
points.push_back( Point(100,70));
points.push_back( Point(60,150));
points.push_back( Point(190,120));
//apply triangle to mask
fillConvexPoly( mask, points, Scalar( 255 ));
之后你的面具看起来像这样:
最后创建最终图像,将蒙版应用于原始图像:
//final image definition
cv::Mat finalImage = cv::Mat::zeros(image.size(), image.type());
image.copyTo(finalImage, mask);
结果:
这就是你要找的吗?
关于c++ - 提取给定坐标内的像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41074927/