繁体   English   中英

用于C ++中基本图像处理的库

[英]Library for basic image manipulation in C++

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

我看过OpenCV,GIL,CImg和Magick ++,但要么它们不是太好,要么我无法弄清楚如何将图像转换为图像灰度。

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

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

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

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

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

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

使用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] 
... 
}

你可以看一下Paintlib

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM