近日在用opencv做一些圖像處理的操作時,需要對一些高分辨率的圖像進行保存。比如,在操作一個容量為230M的圖像后,并對該圖像保存為JPG格式后,發(fā)現(xiàn)圖像容量變?yōu)?0M了!針對這個問題,忙了大半天,到處翻閱資料,終于知道為什么了。

先舉個例子說明自己遇到的問題,為了看出效果,我特意用了一個高分辨率的圖片做實驗。

比如我有如下的一個233M的圖片
iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

經(jīng)過下面的程序讀進內(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了!怎么回事!我什么都沒做啊,圖片大小怎么就大大縮水了呢?
iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

通過翻閱一些資料才知道,原來是圖片格式惹得禍。其實有些圖片格式是自帶壓縮的,比如jpg格式,而bmp格式的圖片是不帶任何壓縮,這就是每種圖片的特點,如果對這些知識點不清楚的話,很容易踩坑!平時我們操作的圖像大小大多數(shù)都以KB為單位,所以經(jīng)過一番“隱形壓縮”后我們很難發(fā)現(xiàn)圖片大小變小了,但是,當(dāng)我們操作大圖的時候,這種壓縮效果一下子就看出來了。

網(wǎng)友評論