近日在用opencv做一些圖像處理的操作時(shí),需要對(duì)一些高分辨率的圖像進(jìn)行保存。比如,在操作一個(gè)容量為230M的圖像后,并對(duì)該圖像保存為JPG格式后,發(fā)現(xiàn)圖像容量變?yōu)?0M了!針對(duì)這個(gè)問題,忙了大半天,到處翻閱資料,終于知道為什么了。
先舉個(gè)例子說明自己遇到的問題,為了看出效果,我特意用了一個(gè)高分辨率的圖片做實(shí)驗(yàn)。
比如我有如下的一個(gè)233M的圖片
經(jīng)過下面的程序讀進(jìn)內(nèi)存,再次保存后,圖片容量就急劇變小了!
#include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp>using namespace std;using namespace cv;int main(int argc, char** argv){ Mat img = imread("src1.jpg"); imwrite("test.jpg", img); return 0; }
保存后的圖片,只剩下126M了!怎么回事!我什么都沒做啊,圖片大小怎么就大大縮水了呢?
通過翻閱一些資料才知道,原來是圖片格式惹得禍。其實(shí)有些圖片格式是自帶壓縮的,比如jpg格式,而bmp格式的圖片是不帶任何壓縮,這就是每種圖片的特點(diǎn),如果對(duì)這些知識(shí)點(diǎn)不清楚的話,很容易踩坑!平時(shí)我們操作的圖像大小大多數(shù)都以KB為單位,所以經(jīng)過一番“隱形壓縮”后我們很難發(fā)現(xiàn)圖片大小變小了,但是,當(dāng)我們操作大圖的時(shí)候,這種壓縮效果一下子就看出來了。