报错日志如下:
--------------------------------------------------------------------------- error Traceback (most recent call last) Cell In[38], line 1 ----> 1 mask_high = cv2.adaptiveThreshold(img, #输入图像 2 1, #超过阈值的部分取值,其余取为0(对于cv.THRESH_BINARY而言) 3 cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY, 4 3, #局部邻域大小,如3、5、7等 5 0.1) #偏移值调整量,用均值或高斯计算阈值后,加这个值就是最终阈值。 6 mask_low = cv2.adaptiveThreshold(img, 1, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 3, -0.1) 7 change_mask_union = (~mask_high+2)*(~mask_low+2) error: OpenCV(4.6.0) C:\b\abs_d8ltn27ay8\croot\opencv-suite_1676452046667\work\modules\imgproc\src\thresh.cpp:1674: error: (-215:Assertion failed) src.type() == CV_8UC1 in function 'cv::adaptiveThreshold'
我在输入图像后甚至使用了img.astype(np.uint8)也无效,使用matplotlib.pyplot的imshow函数查看后甚至依然是灰度图
解决方法是读取时将imread函数的flags置为0,而且注意plt.imshow和cv2.imshow两种函数的色彩模式不同,如果为了检验结果,尽量用后者,否则可能会掩盖问题