我最近不得不在Python中做很多与视觉相关的工作,而且我在格式之间切换时遇到很多困难。当我使用Mahotas读取图像时,我似乎无法将其转换为cv2,尽管它们都使用numpy.ndarray。 SimpleCV可以轻松获取OpenCV图像,但是为简单的cv或mahotas获取SimpleCV图像似乎是一项非常重要的任务。
非常感谢一些格式转换语法。例如,如果我使用mahotas打开灰度图像,默认情况下会将其视为浮点颜色空间。即使我将类型指定为numpy.uint8,cv2似乎也无法将其识别为数组。我不知道如何解决这个问题。我对彩色图像也没有太多运气。我在Ubuntu Oneiric Ocelot上使用Python 2.7 32bit。
提前致谢!
答案 0 :(得分:2)
我从未使用过mahotas。但我目前正在研究SimpleCV。我刚刚发送了一个pull请求,要求使SimpleCV numpy数组与cv2兼容。
所以,基本上,
Image.getNumpy() - > numpy.ndarray for cv2
Image.getBitmap() - > cv2.cv.iplimage
Image.getMatrix() - > cv2.cv.cvmat
将cv2 numpy数组转换为SimpleCV Image对象,
图片(cv2_image) - > SimpleCV.ImageClass.Image
答案 1 :(得分:2)
只有cv2和SimpleCV的经验,才能从SimpleCV转换为cv2:
cv2_image = simplecv_image.getNumpyCv2()
要从cv2转换为SimpleCV:
simplecv_image = Image(cv2_image.transpose(1, 0, 2)[:, :, ::-1])