做图像灰度处理时,报了个错误:
OpenCV(3.4.1) Error: Assertion failed (scn == 1 && (dcn == 3 || dcn == 4)) in cv::cvtColor
代码如下:
import cv2
# 读取图片
#img = cv2.imread('test1.jpg')
img = cv2.imread('test1.png')
# 将图像转化成灰度图
grey_img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
invert_img=cv2.bitwise_not(grey_img)
# 对图片进行模糊化处理
blur_img=cv2.GaussianBlur(invert_img, (111,111),0)
invblur_img=cv2.bitwise_not(blur_img)
sketch_img_test=cv2.divide(grey_img,invblur_img, scale=256.0)
# 保存好素描风格的图片
cv2.imwrite('sketch1.png', sketch_img_test)
看上面的代码读取图片时文件名的后缀名:一个是jpg,一个是PNG,因为存在的图片文件的后缀是.png,开始时代码里读取的后缀名字是.jpg
导致报错了…
其他情况时,也可能报这个错,比如已经是灰度图片了,还做灰度处理时,等等吧…