Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过像素值更改位图图像的对比度[C+;+;-Visual Studio 2013]_C++_Bitmap_Bmp - Fatal编程技术网

C++ 通过像素值更改位图图像的对比度[C+;+;-Visual Studio 2013]

C++ 通过像素值更改位图图像的对比度[C+;+;-Visual Studio 2013],c++,bitmap,bmp,C++,Bitmap,Bmp,您好,我有一个位图图像的像素值存储在一个数组中。我想在图像上应用对比度过滤器?我该怎么做?我知道对于亮度,我给每个像素值加上了一个固定值 我知道openCV库,但我希望在不使用任何外部库的情况下实现这一点。纯C++, 提前谢谢。对比可能意味着很多事情。算法的选择取决于您是想增加亮度对比度还是色度对比度 您可以尝试(例如)将RGB值转换为HSV,然后增加饱和度,再转换回RGB 在任何情况下,您都可以在此处找到要在各种颜色空间之间转换的源代码: 颜色空间的选择将影响选择不同的轴以增加对比度。我想您

您好,我有一个位图图像的像素值存储在一个数组中。我想在图像上应用对比度过滤器?我该怎么做?我知道对于亮度,我给每个像素值加上了一个固定值

我知道openCV库,但我希望在不使用任何外部库的情况下实现这一点。纯C++,


提前谢谢。

对比可能意味着很多事情。算法的选择取决于您是想增加亮度对比度还是色度对比度

您可以尝试(例如)将RGB值转换为HSV,然后增加饱和度,再转换回RGB

在任何情况下,您都可以在此处找到要在各种颜色空间之间转换的源代码:


颜色空间的选择将影响选择不同的轴以增加对比度。

我想您指的是windows api。普通C++不支持图像开始,谢谢快速回答。有没有一种不进行转换的简单方法?这当然取决于要修改哪个属性或属性组合以获得更高的对比度。就个人而言,我认为在HSV或HSL中工作要比直接修改RGB简单得多。然而,我想,如果你的(R,G,B)组件在整个pixmap中的值范围很窄,那么你可以将该组件的范围扩大到Windows位图结构的最大容量(0-255)。请注意,这样做可能会改变每个像素的色调。以下是一些相当松散的伪代码,用于表达在RGB中工作时扩大范围的想法:对于每个像素中的每个组件,获取最大值和最小值。然后,对于每个组件,范围=最大最小值,比率=(范围==0?1:255/范围),对于每个像素中的每个组件,组件=(组件最小值)*比率;这将为您提供所有3个组件中尽可能广泛的范围。