我想转换图片使用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;
}
1条答案
按热度按时间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/