코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main() {
vector<int> params_jpg, params_png;
params_jpg.push_back(IMWRITE_JPEG_QUALITY); //JPG로 화질 설정
params_jpg.push_back(95);
params_png.push_back(IMWRITE_PNG_COMPRESSION); //PNG 압축레벨 저장
params_png.push_back(3);
Mat image = imread("puppy.bmp");
if (image.empty()) {
cout << "Image unloaded" << endl;
return 0;
}
imwrite("output.jpg", image, params_jpg); //puppy.bmp->output.jpg
Mat image_1 = imread("output.jpg");
if (image_1.empty()) {
cout << "Image unloaded" << endl;
return 0;
}
imwrite("output2.png", image, params_png); //puppy.bmp->output2.png
Mat image_2 = imread("output2.png");
if (image_2.empty()) {
cout << "Image unloaded" << endl;
return 0;
}
imshow("original image", image);
imshow("output image", image_1);
imshow("output image2", image_2);
waitKey(0);
}
|
cs |
실행결과:
설명:
vector<int> params_jpg, params_png;
params_jpg.push_back(IMWRITE_JPEG_QUALITY); //JPG로 화질 설정
params_jpg.push_back(95);
params_png.push_back(IMWRITE_PNG_COMPRESSION); //PNG 압축레벨 저장
params_png.push_back(3);
imwrite에 매개변수로 벡터를 넣기 위해 벡터를 만드는 과정.
이저 버전에서는
imwrite("output.jpg", image, IMWRITE_JPEG_QUALITY, 95) ;
이런식으로 코드를 짜도 실행이 됐었지만 현재 최신 버전에서는 에러로 뜬다.
그래서 위에 코드처럼 벡터를 따로 만들어서 벡터값을 매개변수로 넣어야함...
Mat image = imread("puppy.bmp");
if (image.empty()) {
cout << "Image unloaded" << endl;
return 0;
}
imread 이미지를 가져오는 코드
imwrite("output.jpg", image, params_jpg); //puppy.bmp->output.jpg
Mat image_1 = imread("output.jpg");
if (image_1.empty()) {
cout << "Image unloaded" << endl;
return 0;
}
원본 이미지를 jpg로 압축하여 저장하고 다시 불러와서 image_1이라는 변수에 저장.
imwrite("output2.png", image, params_png); //puppy.bmp->output2.png
Mat image_2 = imread("output2.png");
if (image_2.empty()) {
cout << "Image unloaded" << endl;
return 0;
}
마찬가지로 png로 압축한 뒤 불러오기.
imshow("original image", image);
imshow("output image", image_1);
imshow("output image2", image_2);
이미지 보여주기.
'C,C++ > Opencv, c++' 카테고리의 다른 글
Opencv, c++, threshold() (0) | 2019.10.04 |
---|---|
Opencv, c++, cvtColor(), split(), merge() (0) | 2019.10.04 |
Opencv, c++, video 출력 (0) | 2019.09.22 |
Opencv, c++, Rectangle 출력 (0) | 2019.09.22 |