OpenCV 2.0:adaptor.py在哪里?

3 投票
2 回答
1871 浏览
提问于 2025-04-17 08:45

我正在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.fromarraycv.SetData来处理另一种方式。

撰写回答