[英]Failure to use adaptiveThreshold: CV_8UC1 in function adaptiveThreshold
我使用过 openCV python 并遇到错误。
img_blur = cv2.medianBlur(self.cropped_img,5)
img_thresh_Gaussian = cv2.adaptiveThreshold(img_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
plt.subplot(1,1,1),plt.imshow(img_thresh_Gaussian, cmap = 'gray')
plt.title("Image"), plt.xticks([]), plt.yticks([])
plt.show()
但我收到了:
cv2.error: /home/phuong/opencv_src/opencv/modules/imgproc/src/thresh.cpp:1280: error: (-215) src.type() == CV_8UC1 in function adaptiveThreshold
我必须安装其他东西吗?
你应该像这样加载你的文件
src.create(rows, cols, CV_8UC1);
src = imread(your-file, CV_8UC1);
在那之后
adaptiveThreshold(src, dst, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 75, 10);
您可以将代码更改为稍微像这样:
img_blur = cv2.medianBlur(self.cropped_img,5).astype('uint8')
img_thresh_Gaussian = cv2.adaptiveThreshold(img_blur, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
只需添加 ('uint8') 而模糊就解决了我的问题。
您必须以灰度图像读取图像,因此请使用以下代码:
image = imread('address', 0)
0 将图像通道交换为灰度
尝试在 imread 的第二个参数中添加 cv2.IMREAD_GRAYSCALE
img = cv2.imread(File_path, cv2.IMREAD_GRAYSCALE)
在阈值处理之前将图像转换为灰度:
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img_blur = cv2.medianBlur(img_gray,5)
img_thresh_Gaussian = cv2.adaptiveThreshold(img_blur, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
要解决这个问题,您需要使用 0(零)作为另一个参数而不是图像路径来加载灰度图像。
img = cv2.imread(imagepath, 0)
或者img = cv2.imread(imagepath, cv2.IMREAD_GRAYSCALE)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.