cv2、cv、mahotas 与 SimpleCV 之间的图像转换
最近我在用Python做很多与图像相关的工作,但在不同格式之间切换时遇到了很多困难。当我用Mahotas读取一张图片时,似乎无法将其转换为cv2格式,尽管它们都是用numpy.ndarray来处理的。SimpleCV可以轻松处理OpenCV的图像,但要把SimpleCV的图像转换为旧版的cv或mahotas似乎就比较麻烦了。
如果能提供一些格式转换的语法示例,那就太好了。例如,当我用mahotas打开一张灰度图像时,它默认被认为是在浮点颜色空间中。即使我把类型设置为numpy.uint8,cv2似乎也无法识别它为一个数组。我不知道该如何解决这个问题。对于彩色图像,我也没有太多好运。我在Ubuntu Oneiric Ocelot上使用的是32位的Python 2.7。
提前谢谢大家!
2 个回答
2
如果你只对cv2和SimpleCV有一些了解,想要把SimpleCV的代码转换成cv2的代码,可以参考下面的内容:
cv2_image = simplecv_image.getNumpyCv2()
如果你想把cv2的代码转换成SimpleCV的代码,可以看看这个:
simplecv_image = Image(cv2_image.transpose(1, 0, 2)[:, :, ::-1])
2
我之前从来没有用过mahotas。不过我现在在做SimpleCV的项目。我刚刚提交了一个请求,希望能让SimpleCV的numpy数组和cv2兼容。
简单来说,
Image.getNumpy() -> 得到一个适合cv2的numpy.ndarray
Image.getBitmap() -> 得到一个cv2.cv.iplimage
Image.getMatrix() -> 得到一个cv2.cv.cvmat
如果你想把cv2的numpy数组转换成SimpleCV的图像对象,可以这样做:
Image(cv2_image) -> SimpleCV.ImageClass.Image