cv2、cv、mahotas 与 SimpleCV 之间的图像转换

5 投票
2 回答
5218 浏览
提问于 2025-04-17 12:43

最近我在用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

撰写回答