我正在试图弄清楚如何为.bmp文件制作Schindlers List(电影)风格的照片过滤器.对于那些没有看过它的人,我希望能够制作除红色之外的所有灰度.
这是一个类,我只允许使用以下库:iostream,fstream,cstdlib,string,cstring.
老师非常好,可以为我们提供大部分代码,我只需要相应地修改像素.
我的灰度算法并不完美.我通过使用fotor的灰度滤镜并比较前后RGB值得到它.当我运行此功能时,即使图片的颜色在我声明的范围内,整个图像也会以灰度结束.
如果有人能帮我做这项工作那就太棒了!
void process( int& red, int& green, int& blue ) //schindler's list filter { if( red < 143 && red > 80 && green < 64 && green > 24 && blue < 70 && blue >> 30 )//my red range { red = red; blue = blue; green = green; } else //if the pixel isnt red the program will go ahead and make it grayscale { red = ((red + green) / 2)*1.01; green = red; blue = red; } }
Lightness Ra.. 5
blue >> 30
愚蠢的错字:你的意思blue > 30
.
blue >> 30
基本上总是为零,它会转换为false
"保持颜色不变"的块.
如果有人能帮我做这项工作那就太棒了!
我们并不是真的在这里.下次请做一些调试.
删除条件,输出表达式和变量的值,直到找到不符合预期的值.做一个测试用例.摘要你的具体用例(即电影的名称与问题无关).
顺便说一下,作为一种风格red = red
等问题完全没有意义!
blue >> 30
愚蠢的错字:你的意思blue > 30
.
blue >> 30
基本上总是为零,它会转换为false
"保持颜色不变"的块.
如果有人能帮我做这项工作那就太棒了!
我们并不是真的在这里.下次请做一些调试.
删除条件,输出表达式和变量的值,直到找到不符合预期的值.做一个测试用例.摘要你的具体用例(即电影的名称与问题无关).
顺便说一下,作为一种风格red = red
等问题完全没有意义!