OpenCV支持bmp、jpg、png、tiff等常用圖像格式的解析
#include <opencv2/opencv.hpp> //頭文件 int main() { cv::Mat img = cv::imread("./tu/馬.jpg", cv::IMREAD_UNCHANGED); //讀入一張圖片 /* 參數2:圖像文件解析的方式,支持的方式有如下: cv::IMREAD_UNCHANGED 不對圖像文件進行任何轉換,直接讀取【讀入完整圖片,包括alpha通道(png有,jpg無)】 IMREAD_GRAYSCALE 將任何圖像均轉換為灰度圖像(單通道)進行讀取 IMREAD_COLOR 將任何圖像均轉為RGB彩色圖像(三通道)進行讀取【默認參數,讀入一副彩色圖片,忽略alpha通道】 IMREAD_ANYDEPTH 如果不設置這個參數,16/32位圖像將會自動轉為8位圖像 IMREAD_ANYCOLOR 將按照圖像文件設定的顏色格式進行圖像讀取 IMREAD_LOAD_GDAL 調用gdal庫進行圖像文件讀取。(可以簡單地理解為讀取TIFF圖像文件) */ imshow("new", img); //在窗口中顯示載入的圖片 //參數1:窗口標題,如果找不到參數1的窗口就新建一個 //imread讀入的圖像 //imshow函數只支持8位灰度圖像、8位彩色圖像和32位灰度圖像(像素值范圍0-1) cv::waitKey(6000); img = cv::imread("./tu/貓.jpg", cv::IMREAD_UNCHANGED); imshow("new", img); cv::waitKey(6000); // 等待6000 ms }
#include <opencv2/opencv.hpp> int main() { cv::Mat img = cv::imread("./tu/馬.jpg", cv::IMREAD_UNCHANGED); int w = img.cols; //返回圖片的寬度 int h = img.rows; //返回圖片的高度 unsigned char* p = img.data; //數據緩存區指針 unsigned int x = (unsigned int)p; x = img.channels(); //返回通道數 x = img.elemSize();//返回的是一個像素占用的字節數 x = img.elemSize() / img.channels() * 8; //深度 std::cout << x << std::endl; cv::waitKey(6000); }
cv::Mat img = cv::imread("./tu/馬.jpg", cv::IMREAD_UNCHANGED); std::vector<int> compression_params; compression_params.push_back(cv::IMWRITE_JPEG_QUALITY); compression_params.push_back(50); cv::imwrite("my.jpg", img, compression_params); //保存圖片 //參數1:文件名 //參數2:Mat類型的矩陣 /* 參數3:[可選]表示為特定格式保存的參數編碼,std::vector<int>類型 看:https://blog.csdn.net/mars_xiaolei/article/details/62233900?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase */