C++ openCV cvSaveImage()增加图像的大小
我正在加载一个图像,并使用cvSaveImage()保存相同的图像,但名称不同。保存后,新保存图像的大小将增大。谁能告诉我为什么以及如何避免它??这是我的密码: int main(){ }C++ openCV cvSaveImage()增加图像的大小,c++,opencv,image-processing,computer-vision,computer-science,C++,Opencv,Image Processing,Computer Vision,Computer Science,我正在加载一个图像,并使用cvSaveImage()保存相同的图像,但名称不同。保存后,新保存图像的大小将增大。谁能告诉我为什么以及如何避免它??这是我的密码: int main(){ } 谢谢。这是因为OpenCV默认使用较低的JPEG压缩因子。下面是如何传递自定义压缩因子-。这是因为OpenCV默认使用较低的JPEG压缩因子。下面是如何传递自定义压缩因子-。JPEG中结合了不同的压缩和编码方法。 很可能您的原始图像使用的压缩/编码与cvSaveImage的标准openCV参数化不同 试试这个
谢谢。这是因为OpenCV默认使用较低的JPEG压缩因子。下面是如何传递自定义压缩因子-。这是因为OpenCV默认使用较低的JPEG压缩因子。下面是如何传递自定义压缩因子-。JPEG中结合了不同的压缩和编码方法。 很可能您的原始图像使用的压缩/编码与cvSaveImage的标准openCV参数化不同 试试这个:
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
IplImage* reSrc = cvLoadImage("reTest.jpg",0);
cvSaveImage("reTest2.jpg", reSrc);
如果reTest.jpg
和reTest2.jpg
具有相同的大小,openCV不会增加文件大小,而只是使用不同的压缩级别或其他内容。
您必须找出原始文件的压缩级别和编码,并使用这些相同的参数保存它,可能使用与openCV不同的库。JPEG中结合了不同的压缩和编码方法。 很可能您的原始图像使用的压缩/编码与cvSaveImage的标准openCV参数化不同 试试这个:
IplImage* src = cvLoadImage("test.jpg", 0);
cvSaveImage("reTest.jpg", src);
IplImage* reSrc = cvLoadImage("reTest.jpg",0);
cvSaveImage("reTest2.jpg", reSrc);
如果reTest.jpg
和reTest2.jpg
具有相同的大小,openCV不会增加文件大小,而只是使用不同的压缩级别或其他内容。
您必须找出原始文件的压缩级别和编码,并使用这些相同的参数保存它,可能使用与openCV不同的库。
jpg
是一种压缩的有损格式,因此无法解码然后再次编码以获得完全相同的数据。压缩比是可变的,因此原始文件的保存速率可能高于第二次保存时的速率。我假设openCV中可能有一些选项来控制这一点。jpg
是一种压缩的有损格式,因此不可能解码然后再次编码以获得完全相同的数据。压缩比是可变的,因此原始文件的保存速率可能高于第二次保存时的速率。我想openCV中可能有一些选项可以控制这一点。