Zi 字媒體
2017-07-25T20:27:27+00:00
OPENCV圖像色彩空間與應用轉換[利用RGB轉HSV達到圖像去背/顏色偵測 效果]
資料來源: https://mp.weixin.qq.com/s?__biz=MzA4MDExMDEyMw==&mid=2247487846&idx=1&sn=b37138529b27f27761f8b413359f23ff&chksm=9fa86622a8dfef34e230db6b7934ba31ba35aaa728c6de441a500f78f4df807042cd2d45080e&scene=126&sessionid=1580708165&key=770228bd0c42a094e368c6b53f28c79cc88b8e633bdee55433372790587a329b009805d11cf908a98ebc2ae614b0c8d31b028c6bd2a7713ba8f3df5e924c67bc62c5bf61d8cf616e0f4404b8413fc200&ascene=1&uin=MjIwODk2NDgxNw==&devicetype=Windows+10&version=6208006f&lang=zh_TW&exportkey=ApIdp03xFZhH6gGZaGNX7D4=&pass_ticket=2DoZmWVnEtz3icm2PB+ayuUcqv9cXB85Gfur/LC9QWuEf3aWO8oX/5eXQtPf9s4Y
H(Hue) 表示顏色通道,不同的值表示不同的顏色範圍
S表示飽和度通道,表示色澤
V表示亮度通道,代表圖像亮度高低級別
在H、S、V通道上對圖像亮度跟顏色或者飽和度的調整就非常方便了,另外對一些特定的顏色值進行分離也比較方便了。
#include
#include
using namespace cv;
using namespace std;
int main(int argc, const char *argv[])
{
Mat src = imread("D:/vcprojects/images/cat.jpg");
if (src.empty()) {
printf("could not load image...\n");
return -1;
}
namedWindow("input", WINDOW_AUTOSIZE);
imshow("input", src);
// RGB to HSV
Mat hsv;
cvtColor(src, hsv, COLOR_BGR2HSV);
imshow("hsv", hsv);
// RGB to YUV
Mat yuv;
cvtColor(src, yuv, COLOR_BGR2YUV);
imshow("yuv", yuv);
// RGB to YUV
Mat ycrcb;
cvtColor(src, ycrcb, COLOR_BGR2YCrCb);
imshow("ycrcb", ycrcb);
Mat src2 = imread("D:/javaopencv/tinygreen.png");
imshow("src2", src2);
cvtColor(src2, hsv, COLOR_BGR2HSV);
Mat mask;
inRange(hsv, Scalar(35, 43, 46), Scalar(99, 255, 255), mask);
imshow("mask", mask);
waitKey(0);
return 0;
}
寫了
5860316篇文章,獲得
23313次喜歡