3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
fanfuhan OpenCV 教學009 ~ opencv-009-色彩空間及其應用(提取圖像的前景和背景) 資料來源: https://fanfuhan.github.io/ https://fanfuhan.github.io/2019/03/24/opencv-009/ GITHUB:https://github.com/jash-git/fanfuhan_ML_OpenCV 實作分離前景/背景     使用HSV表中查到綠色最高和最低值,建立遮罩(mask)     利用圖像 AND/NOT 配合遮罩 提取(抓取) 前景/背景圖片 C++ #include #include using namespace std; using namespace cv; /* * 色彩空间及其应用 */ int main() { Mat src = imread("../images/test.png"); if (src.empty()) { cout << "could not load image.." << endl; } imshow("input", src); // RGB ==> HSV YUV YCrCb Mat hsv, yuv, ycrcb; cvtColor(src, hsv, COLOR_BGR2HSV); cvtColor(src, yuv, COLOR_BGR2YUV); cvtColor(src, ycrcb, COLOR_BGR2YCrCb); imshow("hsv", hsv); imshow("yuv", yuv); imshow("ycrcb", ycrcb); /* * 提取图像前景和背景 */ Mat src2 = imread("../images/boy.jpg"); imshow("input boy", src2); cvtColor(src2, hsv, COLOR_BGR2HSV); // 从HSV表中查到绿色的最低值和最高值,建立掩模 Mat mask, mask_not; inRange(hsv, Scalar(35, 43, 46), Scalar(77, 255, 255), mask); imshow("mask", mask); Mat fg, bg; // 提取背景 bitwise_and(src2, src2, bg, mask); // 提取前景 bitwise_not(mask, mask_not); imshow("mask_not", mask_not); bitwise_and(src2, src2, fg, mask_not); imshow("background", bg); imshow("foreground" ,fg); waitKey(0); return 0; } Python import cv2 as cv src = cv.imread("../images/test.png") cv.namedWindow("rgb", cv.WINDOW_AUTOSIZE) cv.imshow("rgb", src) # RGB to HSV hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV) cv.imshow("hsv", hsv) # RGB to YUV yuv = cv.cvtColor(src, cv.COLOR_BGR2YUV) cv.imshow("yuv", yuv) # RGB to YUV ycrcb = cv.cvtColor(src, cv.COLOR_BGR2YCrCb) cv.imshow("ycrcb", ycrcb) src2 = cv.imread("../images/boy.jpg"); cv.imshow("src2", src2) hsv = cv.cvtColor(src2, cv.COLOR_BGR2HSV) mask = cv.inRange(hsv, (35, 43, 46), (99, 255, 255)) dst = cv.bitwise_and(src2, src2, mask=mask) cv.imshow("mask", mask) cv.imshow("dst", dst) cv.waitKey(0) cv.destroyAllWindows()

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦