java&opencv无法将rgb.gif图像转换为灰色

1yjd4xko  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(331)

我想转换图片使用java和opencv从rgb到灰色
所有的图像都正常工作,我用灰色图像,
如果我制作.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;

}
nc1teljy

nc1teljy1#

根据官方文件
目前,支持以下文件格式:
windows位图-.bmp,.dib(始终支持)
jpeg文件-.jpeg,.jpg,.jpe(请参阅“注解”部分)
jpeg 2000文件-
.jp2(请参阅“注解”部分)
可移植网络图形-.png(请参见注解部分)
webp-
.webp(请参见“注解”部分)
便携式图像格式-.pbm,.pgm,.ppm.pxm,.pnm(始终支持)
太阳光栅-
.sr,.ras(始终支持)
tiff文件-
.tiff,.tif(请参见“注解”部分)
openexr图像文件-
.exr(请参阅“注解”部分)
radiance hdr-.hdr,.pic(始终支持)
gdal支持的栅格和矢量地理空间数据(请参见“注解”部分)
显然不包括支持,因为gif是一种专有格式。http://answers.opencv.org/question/72134/cv2imread-cannot-read-gifs/

相关问题