cv2.imwrite('binary_image.jpg', thresh) 不输出
时间: 2024-01-07 07:05:35 浏览: 137
是的,cv2.imwrite()函数不会返回任何值,如果没有抛出异常,就意味着保存成功。如果希望验证是否保存成功,可以使用cv2.imread()函数读取保存的图像并显示。下面是一个完整的例子:
```
import cv2
# 读取原始图像
img = cv2.imread('image.jpg', 0)
# 二值化处理
ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 保存处理后的图像
cv2.imwrite('binary_image.jpg', thresh)
# 读取保存的图像
saved_img = cv2.imread('binary_image.jpg', 0)
# 显示读取的图像
cv2.imshow('saved image', saved_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,使用cv2.imread()函数读取保存的图像,并使用cv2.imshow()函数显示读取的图像。如果图像保存成功,应该能够正确地显示读取的图像。
相关问题
解释这段代码的作用 def get_diff_img(self, original_img_path, beautify_img_path, diff_img_path): """ :return: * """ original_img = cv2.imread(original_img_path) beautify_img = cv2.imread(beautify_img_path) difference = cv2.absdiff(original_img, beautify_img) Conv_hsv_Gray = cv2.cvtColor(difference, cv2.COLOR_BGR2GRAY) max_thresh = 50 threshs = list(range(0, max_thresh, int(max_thresh / 10))) colors = ['f1ea09', 'efd60a', 'edc20b', 'eaae0d', 'e89a0e', 'e6850f', 'e47110', 'e15d12', 'df4913', 'dd3514'] diff_image = np.zeros(original_img.shape, dtype=np.uint8) for idx, thresh in enumerate(threshs): ret, mask = cv2.threshold(Conv_hsv_Gray, thresh, 255, cv2.THRESH_BINARY_INV) color = colors[idx] diff_image[mask != 255] = np.array(list(int(color[i:i + 2], 16) for i in (0, 2, 4))) diff_image = cv2.cvtColor(diff_image, cv2.COLOR_RGBA2BGRA) cv2.imwrite(diff_img_path, diff_image)
这段代码主要实现了比较两张图片的不同之处,并生成一张差异图。具体来说,它读取了两张图片的路径,使用OpenCV库的函数cv2.imread()读取这两张图片,接着使用cv2.absdiff()计算出两张图片的差异,将结果转换为灰度图像并存储在Conv_hsv_Gray中。然后,它定义了一个阈值列表threshs和一个颜色列表colors,用于根据不同的阈值给差异图像上色。接着,它将差异图像初始化为0,并使用循环迭代不同的阈值,并使用cv2.threshold()函数将灰度图像二值化,生成一个掩膜(mask),然后将颜色应用于掩膜区域,最后将结果存储在diff_image中。最后,它将diff_image转换为BGRA格式并将其写入指定的差异图像路径。
image = cv2.imread('scan.jpg') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) if preprocess == "thresh": gray = cv2.threshold(gray, 0, 255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] if preprocess == "blur": gray = cv2.medianBlur(gray, 3) filename = "{}.png".format(os.getpid()) cv2.imwrite(filename, gray) text = pytesseract.image_to_string(Image.open(filename),lang='chi_sim') print(text) cv2.imshow("Image", image) cv2.imshow("Output", gray) cv2.waitKey(0)
这段代码主要是用于读取图像、对图像进行预处理并提取文本内容。我会逐步解释代码的功能:
- 首先,使用`cv2.imread()`函数读取名为`scan.jpg`的图像并将其存储在`image`变量中。
- 接下来,使用`cv2.cvtColor()`函数将彩色图像转换为灰度图像,并将结果存储在`gray`变量中。
- 如果`preprocess`变量的值是"thresh",则通过阈值化操作将灰度图像二值化,使用`cv2.threshold()`函数并将结果存储在`gray`变量中。
- 如果`preprocess`变量的值是"blur",则通过中值模糊操作对灰度图像进行模糊处理,使用`cv2.medianBlur()`函数并将结果存储在`gray`变量中。
- 接下来,使用`os.getpid()`函数获取当前进程的ID,并将其作为文件名的一部分,将灰度图像以PNG格式保存到文件中,文件名存储在`filename`变量中。
- 使用`pytesseract.image_to_string()`函数读取图像文件中的文本内容,并将结果存储在`text`变量中。其中,设置参数`lang='chi_sim'`用于指定识别中文字符。
- 最后,使用`cv2.imshow()`函数显示原始图像和预处理后的灰度图像。使用`cv2.waitKey(0)`等待用户按下任意键后关闭图像窗口。
这段代码使用了OpenCV和Tesseract库来进行图像处理和文本识别。
阅读全文