OpenCV去除綠幕摳圖源碼
綠佈原圖
摳圖後的圖片
源碼
#include <opencv2/opencv.hpp> #include <iostream> #include <vector> #include <cstdio> #include <cstring> using namespace cv; using namespace std; int main() { //1、設置需要去除的顏色 //2、顏色比對 //3、展示效果 //隻有png有透明度空間,jpg是沒有透明度空間的 Mat srcImg = imread("E:/img/lvbu.jpg", -1); cout << srcImg.channels() << endl; Vec3b color(0, 255, 0); //綠色 //int tempr = 0; int tempc = 0; //先把圖片放大,做完摳圖後再縮小。 Mat temp; //轉換圖片,增加透明區域 cvtColor(srcImg, temp, COLOR_RGB2BGRA); for (int i = 0; i < srcImg.rows; ++i) { for (int j = 0; j < srcImg.cols; ++j) { Vec3b &pixel = srcImg.at<Vec3b>(i, j); Vec4b &pixel_temp = temp.at<Vec4b>(i, j); if (pixel[0] <= 30 && pixel[1] >= 210 && pixel[2] <= 30) { tempc = j + 1; //把符合要求的下一個點也摳掉 pixel_temp[3] = 0; //pixel[0] = 255; //pixel[1] = 255; //pixel[2] = 255; } else if (tempc == j - 1) { pixel_temp[3] = 0; /*pixel[0] = 255; pixel[1] = 255; pixel[2] = 255;*/ } } } imshow("result", temp); imwrite("E:/img/result.png", temp); waitKey(0); return 0; }
到此這篇關於OpenCV去除綠幕 摳圖的文章就介紹到這瞭,更多相關OpenCV摳圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- OpenCV實現更改圖片顏色功能
- OpenCV實現背景分離(證件照背景替換)
- C++ opencv圖像處理實現灰度變換示例
- OpenCV利用對比度亮度變換實現水印去除
- Python使用OpenCV對圖像進行縮放功能