2016-12-10 54 views
2

我是图像处理和开发新手。我有一个图像的像素坐标。通过连接每个坐标可以得到一个三角形。我想提取给定坐标像素内的像素(三角形内的像素)提取给定坐标内的像素

坐标如下。

1(x,y) -> (146 , 548) 
2(x,y) -> (155, 548) 
3(x,y) -> (149.6 , 558.1) 

我如何拍摄以上坐标入站的像素。任何帮助表示赞赏。谢谢。

+1

首先使用drawContours方法绘制三点轮廓,然后使用该图像作为蒙版来提取像素。 – hariprasad

+0

@hariprasad你能解释一下吗? – Alan

回答

4

您应该在图像上敷面膜。

示例代码:

首先,你应该载入图片:

//load default image 
Mat image = cv::imread("/home/fabio/code/lena.jpg", cv::IMREAD_GRAYSCALE); 

default image loaded

然后创建你的形象口罩和应用三角点到面罩。

//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)); 

之后,你的面具看起来就像这样:

triangle mask image

最后创建应用掩码原始图像最终图像:

//final image definition 
cv::Mat finalImage = cv::Mat::zeros(image.size(), image.type()); 

image.copyTo(finalImage, mask); 

结果:

result

这是你在找什么?

+0

yap这是正确的。谢谢你进一步我怎么可以只带三角形没有背景。 – Alan