如何从图像中复制片段?

Mic*_*ael 3 c# opencv image-processing emgucv

我有Emgu图片:

Image<Bgr,byte> image = new Image<Bgr,byte>("image.jpg"); 
Run Code Online (Sandbox Code Playgroud)

这是文件(image.jpg)的样子:

在此输入图像描述

我要复制到新图像的红黄三角内的所有像素称为:

Image<Bgr,byte> copiedSegment;
Run Code Online (Sandbox Code Playgroud)

如果我有坐标三角形轮廓的所有坐标,任何想法如何实现它.

先感谢您.

Ele*_*ent 5

在opencv c ++ api中,您可以使用矩阵复制功能和由三角形组件组成的掩码.

Mat image = imread("image.jpg",CV_LOAD_IMAGE_COLOR);
vector<Point> triangleRoi;
Mat mask;

//draw your trianlge on the mask
cv::fillConvexPoly(mask, triangleRoi, 255);

Mat copiedSegment;
image.copyTo(copiedSegment,mask);
Run Code Online (Sandbox Code Playgroud)

您应该能够基于此在emgu中编写一些类似的代码.

  • 为了利用透明度,我建议您查看OpenCV文档中的第4个频道.将您的图片初始化为"CV_8UC4"并为第4个通道创建一个带有零的`cv :: Mat`,然后将提取的3通道图像与此"空白"通道合并. (2认同)