2017-01-03 9 views
1

Я хочу, чтобы преобразовать фотографии с помощью Java и OpenCV от RGB к серымJava & OpenCV не может преобразовать RGB .GIF изображения Греет

Все расширения изображений работают правильно, и я беру серое изображение,

просто если я .GIF изображение (не двигается), это дает мне эту ошибку:

OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cv::cvtColor

код Java:

Mat scrImg = Highgui.imread(path); 
 
Mat dstImg = new Mat(scrImg.rows(),scrImg.cols(),scrImg.type()); 
 
Imgproc.cvtColor(scrImg, dstImg, Imgproc.COLOR_RGB2GRAY); 
 

 
private static BufferedImage Mat2BufferedImage(Mat matrix){ 
 
\t BufferedImage bimOut; 
 
\t int type; 
 
\t if(matrix.channels() == 1) 
 
\t \t type = BufferedImage.TYPE_BYTE_GRAY; 
 
\t \t 
 
\t else 
 
\t \t type = BufferedImage.TYPE_3BYTE_BGR; 
 
\t 
 
\t int dataLength = matrix.channels()*matrix.cols()*matrix.rows(); 
 
\t byte [] buffer = new byte[dataLength]; 
 
\t bimOut = new BufferedImage(matrix.cols(),matrix.rows(),type); 
 
\t matrix.get(0,0,buffer); 
 
\t final byte[] bimPixels = ((DataBufferByte) bimOut.getRaster().getDataBuffer()).getData(); 
 
\t System.arraycopy(buffer, 0, bimPixels, 0, buffer.length); 
 
\t 
 
\t return bimOut; 
 

 
}

+0

Вы можете проверить, было ли загружено изображение tje src успешно? Можете ли вы выводить src.channels? – Micka

+0

Когда я добавляю .gif-образ, он загружен успешно, но проблема в том, когда я хочу преобразовать его в изображение GRAY. – Saad

+0

можете ли вы выводить/печатать количество каналов исходного изображения? – Micka

ответ

1

Согласно официальным documentation

Currently, the following file formats are supported:

  • Windows bitmaps - *.bmp, *.dib (always supported)
  • JPEG files - *.jpeg, *.jpg, *.jpe (see the Notes section)
  • JPEG 2000 files - *.jp2 (see the Notes section)
  • Portable Network Graphics - *.png (see the Notes section)
  • WebP - *.webp (see the Notes section)
  • Portable image format - *.pbm, *.pgm, *.ppm *.pxm, *.pnm (always supported)
  • Sun rasters - *.sr, *.ras (always supported)
  • TIFF files - *.tiff, *.tif (see the Notes section)
  • OpenEXR Image files - *.exr (see the Notes section)
  • Radiance HDR - *.hdr, *.pic (always supported)
  • Raster and Vector geospatial data supported by Gdal (see the Notes section)

Видимо поддержке не включен Поскольку GIF является собственным форматом. http://answers.opencv.org/question/72134/cv2imread-cannot-read-gifs/

+0

[документация] (http://docs.opencv.org/3.1.0/d4/da8/group__imgcodecs.html#ga288b8b3da0892bd651fce07b3bbd3a56) кажется немного более авторитетным источником информации, а не комментариями по вопросу. –

+1

Согласен. Я использую свой телефон прямо сейчас, поэтому мне нужно идти первым, что я нахожу. Я буду обновлять свой ответ, чтобы включить его. – xerotolerant

+0

Но я могу узнать изображение .gif, но я не могу преобразовать его в серый, вот в чем проблема – Saad