from scipy.misc import imread
from matplotlib import pyplot

import cv2
from cv2 import cv

from SRM import SRM ## Module for Statistical Regional Segmentation

im = imread("lena.png")
im2 = cv2.imread("lena.png")
print type(im), type(im2), im.shape, im2.shape
## Prints <type 'numpy.ndarray'> <type 'numpy.ndarray'> (120, 120, 3) (120, 120, 3)

srm = SRM(im, 256)
segmented = srm.run()

srm2 = SRM(im2, 256)
segmented2 = srm2.run()

pic = segmented/256
pic2 = segmented2/256

pyplot.imshow(pic)
pyplot.imsave("onePic.jpg", pic)

pic = pic.astype('uint8')
cv2.imwrite("onePic2.jpg", pic2)

pyplot.show()
onePic.jpg提供正确的分割图像,但onePic2.jpg提供完整的黑色图像。
使用uint8将数据类型转换为pic = pic.astype('uint8')并没有帮助。我仍然给出黑色图像!

使用pyplot.imsave()的onePic.jpg:

使用cv2.imwrite()的onePic2.jpg:

请帮忙!

最佳答案

pic转换为uint8之前,您需要将其乘以255以获取正确的范围。

关于image - pyplot.imsave()正确保存图像,但是cv2.imwrite()将相同图像保存为黑色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19239381/

10-12 23:18