我正在使用CImg和Imagemagick而我正在尝试做的是编写程序获取图像的代码,搜索其中的特定形状(例如矩形或三角形),然后裁剪每个形状,最后将它们保存为其他一些png文件。
假设我想将黄色车的车牌号裁剪成新的png文件,:
(https://www.mediafire.com/view/vs8f32o9gv3x8rp/carnum-1-min.png)
我该怎么办? 顺便说一下,有没有更好的方法来创建图像(使用ImageMagick)给出RGB值?现在我正在尝试这个:
image.draw_point()
我只是想知道是否有一个更好的命令而不是这个(以任何可能的方式更好,因为我已经阅读了很多人的评论和赞美ImageMagick命令是多么伟大和有用。 ) 感谢。
答案 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.cannyEdge
或Magick::Image.houghLine
方法。但是,ImageMagick执行光栅变换&操纵 - 不是轮廓(物体)分析。
听起来你需要一个靠近opencv,specifically contour matching的工具。