Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Python opencv/cv2错误着色_Python_Opencv_Cv2 - Fatal编程技术网

Python opencv/cv2错误着色

Python opencv/cv2错误着色,python,opencv,cv2,Python,Opencv,Cv2,示例图像: 我正在用Python和OpenCV进行一个项目,在这个项目中,我需要稍微淡化图像的颜色,使其更暗。到目前为止一切都很顺利,只是我在结果图像中发现了奇怪的错误着色,其中大面积的区域要么是白色,要么是紫色,要么是类似的。参见所附示例。我找不到任何解释,即使在大量的谷歌搜索。你知道这是什么原因吗 我的代码如下所示: poster = stbt.load_image("test1.png") b, g, r = cv2.split(poster) val = 40 b -= val g -

示例图像:

我正在用Python和OpenCV进行一个项目,在这个项目中,我需要稍微淡化图像的颜色,使其更暗。到目前为止一切都很顺利,只是我在结果图像中发现了奇怪的错误着色,其中大面积的区域要么是白色,要么是紫色,要么是类似的。参见所附示例。我找不到任何解释,即使在大量的谷歌搜索。你知道这是什么原因吗

我的代码如下所示:

poster = stbt.load_image("test1.png")
b, g, r = cv2.split(poster)
val = 40
b -= val
g -= val
r -= val
poster = cv2.merge((b, g, r))
cv2.imshow("frame2", poster)
cv2.waitKey(0)
cv2.destroyAllWindows()

谢谢大家!我尝试了很多东西,包括上面的建议。我确实设法消除了色差,但仍然不能得到我想要的结果。但是我发现这个看起来应该可以帮我搞定

编辑: 我测试了上述解决方案,效果很好:)。见下例:

from PIL import Image, ImageEnhance

img = Image.open("dev/poster.png")
br = ImageEnhance.Brightness(img)
img = br.enhance(0.7)
img.show("")

看起来像是底流--我猜你在没有饱和的情况下进行减法,但是因为你没有显示你的代码,所以很难告诉你你到底做错了什么。你应该使用gamma校正来避免错误着色。示例:请回答您的问题,而不是在评论中发布未格式化的代码。对此表示抱歉:)请查看代码和图像示例您可以随时从OpenCV使用,它将为您进行饱和,您可以传递标量。。。您不需要进行拆分或合并。此外,您还可以尝试使用@Mika72的答案中的伽马校正。您可以分享解决方案吗?