cv2.imread读取中文
时间: 2023-11-07 09:56:44 浏览: 110
cv2.imread并不支持直接读取中文路径下的图片,这是因为默认的字符编码是ASCII编码,无法识别中文字符。解决办法是使用cv2.imdecode函数来读取中文路径下的图片。下面是一个示例代码,可以帮助你解决这个问题:
```
import cv2
import numpy as np
def cv_imread(filePath):
cv_img = cv2.imdecode(np.fromfile(filePath, dtype=np.uint8), -1)
return cv_img
if __name__ == '__main__':
path = 'E:/images/百合/百合1.jpg'
img = cv_imread(path)
cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
通过调用cv_imread函数,你可以成功读取中文路径下的图片。请注意,这里使用了numpy库的fromfile函数来读取图片文件的二进制数据,并且使用cv2.imdecode函数将二进制数据解码为图片。如果你需要将图片保存到中文路径下,你可以使用cv2.imencode函数将图片编码为二进制数据,并使用tofile函数将二进制数据保存到文件中。
相关问题
img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)中img怎么恢复到字符串
将图像数据编码为字符串可以使用以下代码:
```python
import cv2
import numpy as np
# 加载图像
img = cv2.imread("image.jpg", cv2.IMREAD_COLOR)
# 将图像转换为字节数组
img_bytes = cv2.imencode(".jpg", img)[1].tobytes()
# 将字节数组转换为字符串
img_str = img_bytes.decode("ISO-8859-1")
# 打印字符串长度
print(len(img_str))
```
在上面的代码中,我们首先加载图像,然后将其转换为字节数组。接下来,我们将字节数组转换为字符串,使用了 `decode` 方法并指定了编码格式为 `ISO-8859-1`。最后,我们打印了字符串的长度,以确保转换成功。
注意:将图像编码为字符串可能会导致字符串长度非常大,这可能会影响性能和存储空间。因此,通常情况下,将图像保存为文件并在需要时读取文件是更好的选择。
import cv2 from detection import copy_move_detector im = cv2.imread("assets/fiori-gialli.jpg") score = copy_move_detector(im) print(score[0])
这段代码似乎有语法错误。应该这样写:
```python
import cv2
from detection import copy_move_detector
im = cv2.imread("assets/fiori-gialli.jpg")
score = copy_move_detector(im)
print(score[0])
```
这段代码使用了 OpenCV 库来读取一张图片,并且调用了 `copy_move_detector` 函数进行图像抄袭检测。最后输出检测得分。
阅读全文