OpenCV去除綠幕摳圖源碼
綠布原圖
摳圖后的圖片
源碼
#include <opencv2/opencv.hpp> #include <iostream> #include <vector> #include <cstdio> #include <cstring> using namespace cv; using namespace std; int main() { //1、設(shè)置需要去除的顏色 //2、顏色比對(duì) //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; //轉(zhuǎn)換圖片,增加透明區(qū)域 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; //把符合要求的下一個(gè)點(diǎn)也摳掉 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; }
到此這篇關(guān)于OpenCV去除綠幕 摳圖的文章就介紹到這了,更多相關(guān)OpenCV摳圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過程
利用C/C++開發(fā)大型應(yīng)用程序中,內(nèi)存的管理與分配是一個(gè)需要認(rèn)真考慮的部分,下面這篇文章主要給大家介紹了關(guān)于C++設(shè)計(jì)一個(gè)簡(jiǎn)單內(nèi)存池的全過程,需要的朋友可以參考下2021-09-09OpenCV使用BSM統(tǒng)計(jì)視頻中移動(dòng)的對(duì)象
這篇文章主要為大家詳細(xì)介紹了OpenCV如何使用BackgroundSubstractor(BSM)實(shí)現(xiàn)視頻中移動(dòng)對(duì)象統(tǒng)計(jì)功能,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-02-02C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析
這篇文章主要介紹了C++?基本數(shù)據(jù)類型中int、long等整數(shù)類型取值范圍及原理分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11Matlab實(shí)現(xiàn)同步子圖視角的方法詳解
這篇文章主要和大家分享三個(gè)可以Matlab中更簡(jiǎn)便實(shí)現(xiàn)同步子圖視角的技巧,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以學(xué)習(xí)一下2022-06-06C++ std::unique_lock 用法實(shí)例詳解
std::unique_lock 是 C++11 提供的一個(gè)用于管理互斥鎖的類,它提供了更靈活的鎖管理功能,適用于各種多線程場(chǎng)景,這篇文章給大家介紹了C++ std::unique_lock 用法,感興趣的朋友跟隨小編一起看看吧2023-09-09