【问题标题】:Extract pixels within given cordinates提取给定坐标内的像素
【发布时间】:2016-12-10 11:18:31
【问题描述】:

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

坐标如下。

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

我如何获取上述坐标的入站像素。任何帮助表示赞赏。谢谢你。

【问题讨论】:

  • 首先使用 drawContours 方法绘制一个包含三个点的轮廓,然后使用该图像作为掩码来提取像素。
  • @hariprasad 你能解释一下吗?

标签: c++ opencv


【解决方案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);

结果:

这就是你要找的吗?

【讨论】:

  • 是的,这是正确的。谢谢你,我怎么能只用没有背景的三角形。
【解决方案2】:

有一个线程在谈论这个问题,那里给出的解决方案很容易适用于您的情况,只需替换提供的示例中使用的形状。

这是链接:opencv-binary-image-mask-for-image-analysis-in-c

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 1970-01-01
    • 2017-09-17
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2011-09-05
    • 2010-11-28
    相关资源
    最近更新 更多