Java& OpenCV无法将RGB .gif图像转换为灰色

时间:2017-01-03 16:04:53

标签: java eclipse opencv rgb gif

我想使用Java和OpenCV将图片从RGB转换为GRAY

所有扩展图片都能正常工作,我拍摄灰色图片,

如果我制作.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){
	BufferedImage bimOut;
	int type;
	if(matrix.channels() == 1)
		type = BufferedImage.TYPE_BYTE_GRAY;
		
	else 
		type = BufferedImage.TYPE_3BYTE_BGR;
	
	int dataLength = matrix.channels()*matrix.cols()*matrix.rows();
	byte [] buffer = new byte[dataLength];
	bimOut = new BufferedImage(matrix.cols(),matrix.rows(),type);
	matrix.get(0,0,buffer);
	final byte[] bimPixels = ((DataBufferByte) bimOut.getRaster().getDataBuffer()).getData();
	System.arraycopy(buffer, 0, bimPixels, 0, buffer.length);
	
	return bimOut;

}




1 个答案:

答案 0 :(得分:2)

根据官方documentation

  

目前,支持以下文件格式:

     
      
  • Windows位图 - * .bmp,*。.dib(始终支持)
  •   
  • JPEG文件 - * .jpeg,* .jpg,*。jpe(请参阅“注释”部分)
  •   
  • JPEG 2000文件 - * .jp2(参见“注释”部分)
  •   
  • 便携式网络图形 - * .png(请参阅“注释”部分)
  •   
  • WebP - * .webp(参见“备注”部分)
  •   
  • 便携式图像格式 - * .pbm,* .pgm,*。ppm * .pxm,* .pnm(始终支持)
  •   
  • Sun rasters - * .sr,* .ras(始终支持)
  •   
  • TIFF文件 - * .tiff,* .tif(参见注释部分)
  •   
  • OpenEXR图像文件 - * .exr(参见“注释”部分)
  •   
  • Radiance HDR - * .hdr,* .pic(始终支持)
  •   
  • Gdal支持的栅格和矢量地理空间数据(请参阅“注释”部分)
  •   

显然不包括支持因为gif是专有格式。 http://answers.opencv.org/question/72134/cv2imread-cannot-read-gifs/