#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> int main() { // 圖像源讀取及判斷 cv::Mat srcImage = cv::imread("a.jpg"); if (!srcImage.data) return -1; cv::imshow("srcImage", srcImage); cv::Mat image_hsv, image_H, image_S, image_V, image_col; // HSV顏色空間轉換 cv::cvtColor(srcImage, image_hsv, CV_BGR2HSV); cv::imshow("image_hsv", image_hsv); // YCrCb顏色空間轉換 cv::cvtColor(srcImage, image_col, CV_BGR2YCrCb); cv::imshow("image_YCrCb", image_col); // HLS顏色空間轉換 cv::cvtColor(srcImage, image_col, CV_BGR2HLS); cv::imshow("image_HLS", image_hsv); // Lab顏色空間轉換 cv::cvtColor(srcImage, image_col, CV_BGR2Lab); cv::imshow("image_Lab", image_col); // 分離HSV各個通道 std::vector<cv::Mat> hsvChannels; cv::split(image_hsv, hsvChannels); // 0通道爲H份量,1通道爲S份量,2通道爲V份量 image_H = hsvChannels[0]; image_S = hsvChannels[1]; image_V = hsvChannels[2]; // 分別顯示各通道圖像 cv::imshow("image_H", image_H); cv::imshow("image_S", image_S); cv::imshow("image_V", image_V); cv::waitKey(0); return 0; }