赞
踩
相信很多小伙伴会遇到这个报错:
error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'
主要还是因为首先读取了图片然后搭配resize裁剪图片,显示的报错原因是因为图片是空的,因为前面的cv2.imread()读取到中文路径的所以读取失败
解决办法:
- cv2.imwrite(filename, img)
- 修改为
- cv2.imencode('.jpg', img)[1].tofile(filename)
-
- cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
- 修改为
- cv2.imdecode(np.fromfile(filename, dtype=np.uint8), cv2.IMREAD_GRAYSCALE)
1.
np.fromfile(filename, dtype=np.uint8)
:
这部分代码使用NumPy库的fromfile
函数从文件中读取二进制数据。它会返回一个包含文件数据的NumPy数组,数据类型为uint8
(8位无符号整数)
cv2.imdecode(..., cv2.IMREAD_GRAYSCALE)
: cv2.imdecode
函数用于解码图像数据。它接受两个参数,第一个参数是包含图像数据的二进制数组,第二个参数是加载图像的标志。在这里,使用cv2.IMREAD_GRAYSCALE
标志表示以灰度模式加载图像。
如果你想加载彩色图像,可以将cv2.IMREAD_COLOR
标志传递给cv2.imdecode
函数。这是默认的标志,所以你可以选择省略它,因为如果不指定
2.
cv2.imencode('.jpg', img)
: 这部分代码使用cv2.imencode
函数将图像编码为指定格式(这里是JPEG)。cv2.imencode
返回一个元组,包含两个元素。第一个元素是布尔值,表示编码是否成功,第二个元素是包含编码后的图像数据的NumPy数组
.tofile(filename)
: 这一部分将编码后的图像数据写入文件。tofile
方法是NumPy数组的一个方法,用于将数组数据写入文件。
3.
一般可以集成这种方法,比较适用和实用
- def cv_imread(file_path):
- cv_img = cv2.imdecode(np.fromfile(file_path,dtype=np.uint8),-1)
- return cv_img
希望这篇博客对你有帮助!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。