7

我正在寻找一个很棒的 C++ 库来进行基本的图像处理。我需要做的是能够将图像转换为灰度并有权读取图像的像素。

我看过 OpenCV、GIL、CImg 和 Magick++,但要么它们不太好,要么我不知道如何使用库将图像转换为灰度。

4

6 回答 6

6

如果您要自己将颜色转换为灰度,通常希望对三个通道赋予相同的权重。通常的转换是这样的:

灰色 = 0.3 * R + 0.6 * G + 0.1 * B;

显然,这些因素并不是一成不变的,但它们应该相当接近。

您可以通过更改因子来模拟不同颜色的滤镜——到目前为止,黑白摄影中最常见的滤镜是红色,这意味着增加红色并减少其他两个以保持总因子为 1.0(但保持 G:B比例约为 6:1 左右)。

于 2011-03-25T00:55:36.380 回答
4

CImg 可能是最容易使用的,不用安装它只是一个头文件

于 2011-03-25T00:20:06.267 回答
1

您还可以查看CxImage(C++ 图像处理和转换库)。

于 2011-03-25T00:57:40.693 回答
0

使用Cimg的粗略步骤如下:

#include "CImg.h"
using namespace cimg_library;
...
{
...
CImg<unsigned char> image("source.jpg") //[load jpg][2] needs ImageMagick
cimg_for(img,ptr,float) { *ptr=0; }      //[Loop][3] over every pixel, eg this method equivalent to 'img.fill(0);'
save_jpeg (const char *const filename, const unsigned int quality=100) //[save as a jpg][4] 
... 
}
于 2011-03-25T02:08:29.340 回答
0

你可以看看Paintlib

于 2011-03-25T08:43:02.947 回答
0

ITK是一个很棒的图像处理库。您可以使用 将 RGB 转换为灰度itk::RGBToLuminanceImageFilter

于 2011-03-25T12:51:12.437 回答