2011-12-21 21 views
3

我想在Mac上使用Python中的OpenCV 2.0。我需要能夠在OpenCV IPL格式和PIL Python成像庫格式之間進行轉換。OpenCV 2.0:其中是adaptors.py?

這個問題的最佳答案How do I create an OpenCV image from a PIL image?建議使用一個名爲「opencv.adaptors」的模塊來完成轉換,但是由於我使用的是OpenCV 2.0,我沒有一個名爲「opencv」的模塊(我有「cv」相反),並且似乎沒有任何「cv.adaptors」。

回答

2

您鏈接的答案相當過時。適配器現在消失的原因是因爲它不再需要。對於OpenCV映像的Python綁定現在支持陣列接口(__array_struct____array_interface__),所以您應該只能使用PIL中的Image.fromarray方法以單向方式,而cv.fromarraycv.SetData以其他方式使用。

0

如果您使用的OpenCV 2.0,這裏有一些片段的OpenCV 2.0 cookbook(我已經得到了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())