OpenCV && C++ 03 - Save an Image to a File

mac2022-06-30  13

Code

/* 作者:郑大峰 时间:2019年09月20日 环境:OpenCV 4.1.1 + VS2017 内容:Save an Image to a File */ #include "pch.h" #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat image = imread("claudia.png"); if (image.empty()) { cout << "Could not open or find the image" << endl; cin.get(); return -1; } /* Make changes to the image as necessary e.g. 1. Change brightness/contrast of the image 2. Smooth/Blur image 3. Crop the image 4. Rotate the image 5. Draw shapes on the image */ //bool isSuccess = imwrite("claudia_changed.jpg", image); //write the image to a file as JPEG bool isSuccess = imwrite("claudia_changed.png", image); //write the image to a file as PNG if (isSuccess == false) { cout << "Failed to save the image" << endl; cin.get(); return -1; } cout << "Image is succusfully saved to a file" << endl; cin.get(); return 0; }

Result

Explanation

bool imwrite( const String& filename, InputArray img, const std::vector& params = std::vector())

@brief Saves an image to a specified file.

The function imwrite saves the image to the specified file. The image format is chosen based on the filename extension (see cv::imread for the list of extensions). In general, only 8-bit single-channel or 3-channel (with 'BGR' channel order) images can be saved using this function, with these exceptions:

16-bit unsigned (CV_16U) images can be saved in the case of PNG, JPEG 2000, and TIFF formats32-bit float (CV_32F) images can be saved in PFM, TIFF, OpenEXR, and Radiance HDR formats; 3-channel (CV_32FC3) TIFF images will be saved using the LogLuv high dynamic range encoding (4 bytes per pixel)PNG images with an alpha channel can be saved using this function. To do this, create 8-bit (or 16-bit) 4-channel image BGRA, where the alpha channel goes last. Fully transparent pixels should have alpha set to 0, fully opaque pixels should have alpha set to 255/65535 (see the code sample below).

If the format, depth or channel order is different, use Mat::convertTo and cv::cvtColor to convert it before saving. Or, use the universal FileStorage I/O functions to save the image to XML or YAML format.

The sample below shows how to create a BGRA image and save it to a PNG file. It also demonstrates how to set custom compression parameters: @include snippets/imgcodecs_imwrite.cpp @param filename Name of the file. @param img Image to be saved. @param params Format-specific parameters encoded as pairs (paramId_1, paramValue_1, paramId_2, paramValue_2, ... .) see cv::ImwriteFlags

转载于:https://www.cnblogs.com/zdfffg/p/11557920.html

最新回复(0)