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
OpenCV/Python:cv2.add()中向图像添加数字时出错_Python_Opencv_Image Processing - Fatal编程技术网

OpenCV/Python:cv2.add()中向图像添加数字时出错

OpenCV/Python:cv2.add()中向图像添加数字时出错,python,opencv,image-processing,Python,Opencv,Image Processing,我正在使用OpenCV/Python,我正在尝试向图像添加一个数字 我的代码是: import cv2 import numpy as np import math from matplotlib import pyplot as plt img = cv2.imread('messi.jpg',0) img2 = img img2 = cv2.add(img2, np.uint8([50])) 我得到了下一个错误: OpenCV Error: Assertion failed (type2

我正在使用OpenCV/Python,我正在尝试向图像添加一个数字

我的代码是:

import cv2
import numpy as np
import math
from matplotlib import pyplot as plt

img = cv2.imread('messi.jpg',0)
img2 = img
img2 = cv2.add(img2, np.uint8([50]))
我得到了下一个错误:

OpenCV Error: Assertion failed (type2 == CV_64F && (sz2.height == 1 || sz2.heigh
t == 4)) in cv::arithm_op, file C:\builds\master_PackSlaveAddon-win64-vc12-stati
c\opencv\modules\core\src\arithm.cpp, line 1989
Traceback (most recent call last):
  File "lab3_examples.py", line 27, in <module>
    img2 = cv2.add(img, np.uint8([50]))
cv2.error: C:\builds\master_PackSlaveAddon-win64-vc12-static\opencv\modules\core
\src\arithm.cpp:1989: error: (-215) type2 == CV_64F && (sz2.height == 1 || sz2.h
eight == 4) in function cv::arithm_op
OpenCV错误:断言失败(type2==CV_64F&&(sz2.height==1 | | sz2.heigh
t==4)在cv::arithm_op中,文件C:\builds\master_PackSlaveAddon-win64-vc12-stati
c\opencv\modules\core\src\arithm.cpp,第1989行
回溯(最近一次呼叫最后一次):
文件“lab3_examples.py”,第27行,在
img2=cv2.add(img,np.uint8([50]))
cv2.0错误:C:\builds\master\u PackSlaveAddon-win64-vc12-static\opencv\modules\core
\src\arithm.cpp:1989:错误:(-215)type2==CV_64F&&(sz2.height==1||sz2.h
函数cv::arithm_op中的八==4)
我使用的图像是
mesi.jpg

相反,如果我使用通过值255的
img2=np.add(img2,np.uint8([50])
强度,则
值%255结果
,例如
260%255=4
像素值设置为4,而不是255。结果,白色像素变为黑色

这是错误的结果图像


有什么想法吗?

我建议将BGR图像转换为HSV图像:

hsv= cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
然后使用以下方法拆分通道:

h_channel, s_channel, v_channel = cv2.split(hsv)
现在播放
h_频道

h_channel + = 20  #---You can try any other value as well---
现在,将频道重新合并在一起:

merged = cv2.merge((h_channel , s_channel , v_channel ))
最后将图像转换回BGR并显示:

Final_image = cv2.cvtColor(merged, cv2.COLOR_HSV2BGR)
cv2.imshow('Final output', Final_image)
您将看到增强或变暗的图像,具体取决于您添加的值

希望有帮助在C++中使用了d

。 在Python中

img2=cv2.add(img2,50)

如果您想增加灰度图像的亮度,也可以。如果暗示为彩色,颜色平衡将发生变化。对于彩色图像,为了保持平衡,最好的答案是Alex,Bill Grates:

唯一的备注-代码的下一部分不是必需的:

v[v>255]=255

v[v<0]=0
在我的例子中(Python3,Opencv4)。

这是一个很好的例子,但我想向我的学生解释
RGB
通道,因此没有必要让他们参与
HSV
。无论如何谢谢你!在这种情况下,您可以使用RGB图像尝试相同的情况。将图像拆分为单独的通道,并向其中添加一个整数合并通道,然后查看结果…简单..:D