成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决)
生活随笔
收集整理的這篇文章主要介紹了
成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
成功解決cv2.imwrite(filename, img)代碼輸出中文文件亂碼的問題(cv2.imencode方法解決)
?
?
?
目錄
解決問題
解決思路
1、從網絡讀取圖像數據并轉換成圖片格式
2、將圖片編碼到緩存,并保存到本地
解決方法
?
?
?
?
?
?
解決問題
cv2.imwrite(filename, img)代碼,輸出中文文件亂碼的問題
?
?
解決思路
中文亂碼,利用imencode方法,cv2.imencode('.jpg', img)[1].tofile(filename)?
cv2.imdecode()函數:從指定的內存緩存中讀取數據,并把數據轉換(解碼)成圖像格式;主要用于從網絡傳輸數據中恢復出圖像。
cv2.imencode()函數:是將圖片格式轉換(編碼)成流數據,賦值到內存緩存中;主要用于圖像數據格式的壓縮,方便網絡傳輸。
?
1、從網絡讀取圖像數據并轉換成圖片格式
# -*- coding: utf-8 -*- import numpy as np import urllib import cv2url = 'http://www.pyimagesearch.com/wp-content/uploads/2015/01/google_logo.png' resp = urllib.urlopen(url) image = np.asarray(bytearray(resp.read()), dtype="uint8") image = cv2.imdecode(image, cv2.IMREAD_COLOR) cv2.imshow('URL2Image',image) cv2.waitKey()
2、將圖片編碼到緩存,并保存到本地
# -*- coding: utf-8 -*-
import numpy as np
import urllib
import cv2img = cv2.imread('0122.jpg')
# '.jpg'表示把當前圖片img按照jpg格式編碼,按照不同格式編碼的結果不一樣
img_encode = cv2.imencode('.jpg', img)[1]
# imgg = cv2.imencode('.png', img)data_encode = np.array(img_encode)
str_encode = data_encode.tostring()# 緩存數據保存到本地
with open('img_encode.txt', 'w') as f:f.write(str_encode)f.flush
?
參考文章
OpenCV-Python cv2.imdecode()和cv2.imencode() 圖片解碼和編碼
?
解決方法
將
cv2.imwrite(filename, img)
改為
cv2.imencode('.jpg', img)[1].tofile(filename)?
?
哈哈,大功告成!
?
?
總結
以上是生活随笔為你收集整理的成功解决cv2.imwrite(filename, img)代码输出中文文件乱码的问题(cv2.imencode方法解决)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DayDayUp:《复仇者联盟4:终局之
- 下一篇: Java:Java编程实现导出二维码