如何在C ++中找到png文件中的特定形状?

时间:2018-02-21 18:13:28

标签: image imagemagick cimg

我正在使用CImg和Imagemagick而我正在尝试做的是编写程序获取图像的代码,搜索其中的特定形状(例如矩形或三角形),然后裁剪每个形状,最后将它们保存为其他一些png文件。 假设我想将黄色车的车牌号裁剪成新的png文件,: enter image description here

https://www.mediafire.com/view/vs8f32o9gv3x8rp/carnum-1-min.png

我该怎么办? 顺便说一下,有没有更好的方法来创建图像(使用ImageMagick)给出RGB值?现在我正在尝试这个:

  

image.draw_point()

我只是想知道是否有一个更好的命令而不是这个(以任何可能的方式更好,因为我已经阅读了很多人的评论和赞美ImageMagick命令是多么伟大和有用。 ) 感谢。

1 个答案:

答案 0 :(得分:2)

  

...有没有更好的方法来创建图像(使用ImageMagick)给出RGB值?

方法Magick::Image.read支持从任意像素数据创建图像。您将负责定义大小,通道和数据存储大小。

/* A 3x3 white RGB image */
const unsigned char data[27] = {
    0xff, 0xff, 0xff,    0xff, 0xff, 0xff,    0xff, 0xff, 0xff,
    0xff, 0xff, 0xff,    0xff, 0xff, 0xff,    0xff, 0xff, 0xff,
    0xff, 0xff, 0xff,    0xff, 0xff, 0xff,    0xff, 0xff, 0xff
};
Magick::Image canvas;
canvas.read(
            3, // Width
            3, // Height
            "RGB", // Channels
            Magick::CharPixel, // Storage
            data // pointer to data blob
);

对于要素/边缘检测,您可以使用Magick::Image.cannyEdgeMagick::Image.houghLine方法。但是,ImageMagick执行光栅变换&操纵 - 不是轮廓(物体)分析。

听起来你需要一个靠近specifically contour matching的工具。