OpenCV 2.0:adaptor.py在哪里?
我正在Mac上用Python尝试使用OpenCV 2.0。我需要能够在OpenCV的IPL格式和PIL(Python图像库)格式之间进行转换。
在这个问题的最佳回答中,如何从PIL图像创建OpenCV图像?建议使用一个叫“opencv.adaptors”的模块来进行转换,但因为我使用的是OpenCV 2.0,所以没有叫“opencv”的模块(我有的是“cv”),而且似乎也没有“cv.adaptors”这个东西。
2 个回答
0
如果你在使用OpenCV 2.0,这里有一些来自OpenCV 2.0 食谱的代码片段(我现在用的是OpenCV 2.3,所以没法测试,抱歉):
把PIL图像转换成OpenCV格式:
import Image
import cv
pi = Image.open('foo.png') # PIL image
cv_im = cv.CreateImageHeader(pi.size, cv.IPL_DEPTH_8U, 1)
cv.SetData(cv_im, pi.tostring())
把OpenCV格式转换成PIL图像:
cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1)
pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring())
2
你链接的那个答案已经过时了。现在不再需要适配器的原因是因为它已经不必要了。Python对OpenCV图像的支持现在可以直接使用数组接口(__array_struct__
和 __array_interface__
),所以你可以直接用PIL库里的Image.fromarray
方法来处理一种方式,而用cv.fromarray
或cv.SetData
来处理另一种方式。