这就是我通常用来将数据库中存储的图像转换为Python中的OpenCV图像的方式。
import numpy as npimport cv2from cv2 import cv# Load image as string from file/databasefd = open('foo.jpg')img_str = fd.read()fd.close()# CV2nparr = np.fromstring(img_str, np.uint8)img_np = cv2.imdepre(nparr, cv2.CV_LOAD_IMAGE_COLOR) # cv2.IMREAD_COLOR in OpenCV 3.1# CVimg_ipl = cv.CreateImageHeader((img_np.shape[1], img_np.shape[0]), cv.IPL_DEPTH_8U, 3)cv.SetData(img_ipl, img_np.tostring(), img_np.dtype.itemsize * 3 * img_np.shape[1])# check typesprint type(img_str)print type(img_np)print type(img_ipl)我已添加了从
numpy.ndarray到的转换
cv2.cv.iplimage,因此上面的脚本将显示:
<type 'str'><type 'numpy.ndarray'><type 'cv2.cv.iplimage'>
编辑: 从最新的numpy开始
1.18.5 +,
np.fromstring发出警告,因此
np.frombuffer应在该位置使用。



