2013-10-08 68 views
4
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给出了完整的黑色图像。 使用pic = pic.astype('uint8')将数据类型转换为uint8没有帮助。我仍然给出一个黑色的图像!pyplot.imsave()保存图像正常,但cv2.imwrite()保存相同的图像黑

onePic.jpg使用pyplot.imsave()

enter image description here

onePic2.jpg使用cv2.imwrite()

enter image description here

请帮帮忙!

回答

9

在将pic转换为uint8之前,需要将其乘以255以得到正确的范围。