chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用OpenCV中的簡(jiǎn)單計(jì)算機(jī)視覺(jué)技術(shù)創(chuàng)建我們自己的“隱形衣”

gVTR_Unf ? 來(lái)源:AI算法與圖像處理 ? 作者:AI_study ? 2020-09-07 16:29 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我計(jì)劃分享一些有趣的實(shí)戰(zhàn)項(xiàng)目,或許達(dá)不到商用的級(jí)別,但是希望能在大家做項(xiàng)目的時(shí)候能夠提供一些思路!如果對(duì)你有所幫助,給我點(diǎn)贊 & 在看,讓我知道對(duì)你有幫助哈!

基于OpenCV的顏色檢測(cè)和分割的隱形斗篷

如果你是個(gè)哈利波特迷,你就會(huì)知道什么是隱形衣。是的!這是哈利波特用來(lái)隱身的隱形衣。當(dāng)然,我們都知道隱形衣不是真的——它都是圖形上的詭計(jì)。

在這篇文章中,我們將學(xué)習(xí)如何使用OpenCV中的簡(jiǎn)單計(jì)算機(jī)視覺(jué)技術(shù)創(chuàng)建我們自己的“隱形衣”。文末會(huì)分享 C++python的代碼。

那是哈利·波特在試他的隱形衣!

事實(shí)上,你可以用一種叫做顏色檢測(cè)和分割的圖像處理技術(shù)來(lái)創(chuàng)造這種神奇的體驗(yàn)。好消息是,你不需要成為霍格沃茨的一員!你所需要的是一塊紅色的布,并遵循這篇文章。

它的原理是什么?

算法在原理上與綠幕非常相似。但與我們刪除背景的綠幕不同,在這個(gè)應(yīng)用中,我們刪除了前景!

我們用一塊紅色的布做我們的斗篷。為什么是紅色呢?為什么不綠色的嗎?當(dāng)然,我們可以用綠色,紅色不是魔術(shù)師的顏色嗎?除了此之外,像綠色或藍(lán)色這樣的顏色也可以稍微調(diào)整一下。

其基本思想如下:

1. 捕獲并存儲(chǔ)背景幀。

2. 使用顏色檢測(cè)算法檢測(cè)紅色布料。

3. 將紅色的布料分割成一個(gè)mask。

4. 生成最后的增廣輸出,創(chuàng)造神奇的效果。

上面的GIF簡(jiǎn)單地解釋了算法的所有階段?,F(xiàn)在我們將詳細(xì)討論每一步。

步驟1:捕捉并存儲(chǔ)背景幀

如上所述,關(guān)鍵思想是將當(dāng)前與布料相對(duì)應(yīng)的幀像素替換為背景像素,從而產(chǎn)生一件隱身衣的效果。為此,我們需要存儲(chǔ)一個(gè)背景幀。

C++

//CreateaVideoCaptureobjectandopentheinputfile// If the input is the web camera, pass 0 instead of the video file nameVideoCapture cap("video4.mp4");// Check if camera opened successfullyif(!cap.isOpened()){ cout << "Error opening video stream or file" << endl; return -1;} Mat background;for(int i=0;i<30;i++){ cap >> background;}//Laterally invert the image / flip the image.flip(background,background,1);

Python

# Creating a VideoCapture object# This will be used for image acquisition later in the code.cap = cv2.VideoCapture("video.mp4") # We give some time for the camera to warm-up!time.sleep(3) background=0 for i in range(30): ret,background = cap.read() # Laterally invert the image / flip the image.background = np.flip(background,axis=1)

在上面的代碼中,cap.read()方法使我們能夠通過(guò)相機(jī)捕獲最新的幀(存儲(chǔ)在變量‘background’中),它還返回一個(gè)布爾值(True/False存儲(chǔ)在‘ret’中)。如果一個(gè)幀被正確讀取,它將為真。所以你可以通過(guò)檢查這個(gè)返回值來(lái)檢查視頻的結(jié)束。

為什么捕獲背景圖像使用'循環(huán)' ?

因?yàn)楸尘笆庆o態(tài)的,我們不能簡(jiǎn)單地使用一個(gè)幀嗎?當(dāng)然,但是與多幀圖像相比,捕獲的圖像有點(diǎn)暗。這是因?yàn)橄鄼C(jī)剛剛開(kāi)始捕捉幀,因此它的參數(shù)還不穩(wěn)定。因此,使用for循環(huán)捕獲靜態(tài)背景的多個(gè)圖像就可以完成這個(gè)任務(wù)。

多幀平均也可以降低噪聲。

第二步:檢測(cè)紅色

因?yàn)槲覀兪褂昧艘粔K紅色的布來(lái)將它轉(zhuǎn)換成一件隱形斗篷,所以我們將著重于在框架中檢測(cè)紅色。

聽(tīng)起來(lái)簡(jiǎn)單嗎?我們有一個(gè)RGB(紅-綠-藍(lán))圖像,使用簡(jiǎn)單閾值的R通道來(lái)得到我們的mask。結(jié)果證明,這將并不會(huì)特別有效,因?yàn)镽GB值是高度敏感的照明。因此,即使斗篷是紅色的,也可能有一些區(qū)域,由于陰影,相應(yīng)像素的紅色通道值相當(dāng)?shù)汀?/p>

正確的方法是將圖像的顏色空間從RGB轉(zhuǎn)換為HSV(色相-飽和度-亮度)。

HSV顏色空間是什么?

HSV顏色空間表示使用三個(gè)值的顏色

1.色相(Hue):這個(gè)通道對(duì)顏色信息進(jìn)行編碼。色相可以被認(rèn)為是一個(gè)角度,0度對(duì)應(yīng)紅色,120度對(duì)應(yīng)綠色,240度對(duì)應(yīng)藍(lán)色。

2.飽和度(Saturation):這個(gè)通道編碼顏色的強(qiáng)度/純度。例如,粉色比紅色的飽和度低。

3.值(Value):該通道對(duì)顏色的亮度進(jìn)行編碼。圖像的陰影和光澤成分出現(xiàn)在這個(gè)通道中。

不像RGB是根據(jù)三原色來(lái)定義的,HSV的定義方式類(lèi)似于人類(lèi)感知顏色的方式。

對(duì)于我們的應(yīng)用而言,使用HSV顏色空間的主要優(yōu)點(diǎn)是顏色/色調(diào)/波長(zhǎng)僅由色相組件表示。

要了解不同的色彩空間,請(qǐng)參考我們關(guān)于色彩空間的詳細(xì)博客。

https://www.learnopencv.com/color-spaces-in-opencv-cpp-python/

所以當(dāng)我說(shuō),我需要一個(gè)特定的顏色,選擇色相組件,然后根據(jù)飽和度組件,我得到了那個(gè)顏色的不同的陰影,進(jìn)一步根據(jù)值組件,我得到了一個(gè)顏色的特定陰影的不同的強(qiáng)度。

在下面的代碼中,我們首先捕獲一個(gè)活動(dòng)幀,將圖像從RGB轉(zhuǎn)換為HSV顏色空間,然后定義一個(gè)特定范圍的H-S-V值來(lái)檢測(cè)紅色。

C++

Mat frame;// Capture frame-by-framecap >> frame; // Laterally invert the image / flip the imageflip(frame,frame,1); //Converting image from BGR to HSV color space.Mat hsv;cvtColor(frame, hsv, COLOR_BGR2HSV); Mat mask1,mask2;// Creating masks to detect the upper and lower red color.inRange(hsv, Scalar(0, 120, 70), Scalar(10, 255, 255), mask1);inRange(hsv, Scalar(170, 120, 70), Scalar(180, 255, 255), mask2); // Generating the final maskmask1 = mask1 + mask2;

Python

# Capturing the live frameret, img = cap.read() # Laterally invert the image / flip the imageimg = np.flip(imgaxis=1) # converting from BGR to HSV color spacehsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV) # Range for lower redlower_red = np.array([0,120,70])upper_red = np.array([10,255,255])mask1 = cv2.inRange(hsv, lower_red, upper_red) # Range for upper rangelower_red = np.array([170,120,70])upper_red = np.array([180,255,255])mask2 = cv2.inRange(hsv,lower_red,upper_red) # Generating the final mask to detect red colormask1 = mask1+mask2

inRange函數(shù)簡(jiǎn)單地返回一個(gè)二值化掩碼,其中白色像素(255)表示屬于上限和下限范圍的像素,黑色像素(0)不屬于上限和下限范圍的像素。

色相值實(shí)際上分布在一個(gè)圓上(范圍在0-360度之間),但在OpenCV中為了適應(yīng)8bit 值,其范圍是0-180度。紅色由0-30和150-180值表示。

我們使用范圍0-10和170-180,以避免檢測(cè)皮膚為紅色。飽和度使用較高范圍120-255的值,因?yàn)槲覀兊牟剂蠎?yīng)該是高度飽和的紅色。亮度值在的較低范圍是70,這樣我們也可以在布料的褶皺中檢測(cè)到紅色。

mask1 = mask1 + mask2

使用上面的線,我們合并兩個(gè)紅色范圍生成的mask。它基本上是在像素上進(jìn)行OR操作。這是一個(gè)操作符重載+的簡(jiǎn)單例子。

現(xiàn)在,您已經(jīng)了解了如何進(jìn)行顏色檢測(cè),您可以更改H-S-V范圍,并使用一些其他的單色布來(lái)代替紅色。事實(shí)上,綠色的布比紅色的效果更好,因?yàn)榫G色離人的膚色差異最大。

第三步:將檢測(cè)到的紅色布料分割開(kāi)來(lái)

在上一步中,我們生成了一個(gè)mask來(lái)確定幀中與檢測(cè)到的顏色相對(duì)應(yīng)的區(qū)域。我們精煉這個(gè)mask,然后用它從frame上分割布料。下面的代碼說(shuō)明了它是如何實(shí)現(xiàn)的。

C++

Mat kernel = Mat::ones(3,3, CV_32F);morphologyEx(mask1,mask1,cv::MORPH_OPEN,kernel);morphologyEx(mask1,mask1,cv::MORPH_DILATE,kernel); // creating an inverted mask to segment out the cloth from the framebitwise_not(mask1,mask2);Mat res1, res2, final_output; // Segmenting the cloth out of the frame using bitwise and with the inverted maskbitwise_and(frame,frame,res1,mask2);

Python

mask1 = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((3,3),np.uint8))mask1 = cv2.morphologyEx(mask, cv2.MORPH_DILATE, np.ones((3,3),np.uint8)) #creating an inverted mask to segment out the cloth from the framemask2 = cv2.bitwise_not(mask1) #Segmenting the cloth out of the frame using bitwise and with the inverted maskres1 = cv2.bitwise_and(img,img,mask=mask2)

步驟4:生成最終的增強(qiáng)輸出,以創(chuàng)建一個(gè)神奇的效果。

最后,我們將檢測(cè)到的紅色區(qū)域的像素值替換為靜態(tài)背景對(duì)應(yīng)的像素值,最后生成一個(gè)增強(qiáng)輸出,產(chǎn)生神奇的效果,將我們的布料變成了一件隱身斗篷。為此,我們首先使用bitwise_and操作創(chuàng)建一個(gè)像素值對(duì)應(yīng)于檢測(cè)區(qū)域的圖像,像素值等于靜態(tài)背景的像素值,然后將輸出添加到我們從中分割出紅布的圖像(res1)中。

C++

// creating image showing static background frame pixels only for the masked regionbitwise_and(background,background,res2,mask1); // Generating the final augmented output.addWeighted(res1,1,res2,1,0,final_output);imshow("magic", final_output);waitKey(1);

Python

# creating image showing static background frame pixels only for the masked regionres2 = cv2.bitwise_and(background, background, mask = mask1) #Generating the final outputfinal_output = cv2.addWeighted(res1,1,res2,1,0)imshow("magic",final_output)cv2.waitKey(1)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1094

    瀏覽量

    42003
  • 計(jì)算機(jī)視覺(jué)

    關(guān)注

    9

    文章

    1713

    瀏覽量

    47324
  • OpenCV
    +關(guān)注

    關(guān)注

    33

    文章

    650

    瀏覽量

    43971

原文標(biāo)題:OpenCV黑魔法之隱身衣

文章出處:【微信號(hào):Unfinished_coder,微信公眾號(hào):機(jī)器視覺(jué)CV】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    工業(yè)計(jì)算機(jī)的重要性

    工業(yè)計(jì)算機(jī)對(duì)某些行業(yè)至關(guān)重要。我們將在下面詳細(xì)解釋這些行業(yè)的工業(yè)計(jì)算機(jī)應(yīng)用。1.制造與工業(yè)自動(dòng)化工業(yè)級(jí)計(jì)算機(jī)非常適合制造工廠,特別是那些想
    的頭像 發(fā)表于 07-28 16:07 ?310次閱讀
    工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>的重要性

    自動(dòng)化計(jì)算機(jī)經(jīng)過(guò)加固后有什么好處?

    我們討論一下部署堅(jiān)固的自動(dòng)化計(jì)算機(jī)的一些好處。1.溫度范圍寬自動(dòng)化計(jì)算機(jī)經(jīng)過(guò)工程設(shè)計(jì),配備了支持寬溫度范圍的組件,使自動(dòng)化計(jì)算解決方案能夠在各種不同的極端環(huán)境
    的頭像 發(fā)表于 07-21 16:44 ?321次閱讀
    自動(dòng)化<b class='flag-5'>計(jì)算機(jī)</b>經(jīng)過(guò)加固后有什么好處?

    工業(yè)計(jì)算機(jī)與商用計(jì)算機(jī)的區(qū)別有哪些

    工業(yè)計(jì)算機(jī)是一種專為工廠和工業(yè)環(huán)境設(shè)計(jì)的計(jì)算系統(tǒng),具有高可靠性和穩(wěn)定性,能夠應(yīng)對(duì)惡劣環(huán)境下的自動(dòng)化、制造和機(jī)器人操作。其特點(diǎn)包括無(wú)風(fēng)扇散熱技術(shù)、無(wú)電纜連接和防塵防水設(shè)計(jì),使其在各種工業(yè)自動(dòng)化場(chǎng)景
    的頭像 發(fā)表于 07-10 16:36 ?385次閱讀
    工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>與商用<b class='flag-5'>計(jì)算機(jī)</b>的區(qū)別有哪些

    利用邊緣計(jì)算和工業(yè)計(jì)算機(jī)實(shí)現(xiàn)智能視頻分析

    IVA的好處、實(shí)際部署應(yīng)用程序以及工業(yè)計(jì)算機(jī)如何實(shí)現(xiàn)這些解決方案。一、什么是智能視頻分析(IVA)?智能視頻分析(IVA)集成了復(fù)雜的計(jì)算機(jī)視覺(jué),通常與卷積神經(jīng)網(wǎng)
    的頭像 發(fā)表于 05-16 14:37 ?436次閱讀
    利用邊緣<b class='flag-5'>計(jì)算</b>和工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>實(shí)現(xiàn)智能視頻分析

    Arm KleidiCV與OpenCV集成助力移動(dòng)端計(jì)算機(jī)視覺(jué)性能優(yōu)化

    生成式及多模態(tài)人工智能 (AI) 工作負(fù)載的廣泛增長(zhǎng),推動(dòng)了對(duì)計(jì)算機(jī)視覺(jué) (CV) 技術(shù)日益高漲的需求。此類(lèi)技術(shù)能夠解釋并分析源自現(xiàn)實(shí)世界的視覺(jué)
    的頭像 發(fā)表于 02-24 10:15 ?760次閱讀

    AR和VR計(jì)算機(jī)視覺(jué)

    ):計(jì)算機(jī)視覺(jué)引領(lǐng)混合現(xiàn)實(shí)體驗(yàn)增強(qiáng)現(xiàn)實(shí)(AR)和虛擬現(xiàn)實(shí)(VR)正在徹底改變我們與外部世界的互動(dòng)方式。即便是在引人入勝的沉浸式
    的頭像 發(fā)表于 02-08 14:29 ?1856次閱讀
    AR和VR<b class='flag-5'>中</b>的<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺(jué)</b>

    黃仁勛:我們正重新發(fā)明計(jì)算機(jī)

    近日,英偉達(dá)在北京舉辦了答謝迎春會(huì),英偉達(dá)創(chuàng)始人兼CEO黃仁勛親臨現(xiàn)場(chǎng)并發(fā)表了致辭。在致辭,他透露了一個(gè)令人振奮的消息:“我們正處于一個(gè)新時(shí)代的開(kāi)端,一個(gè)重新發(fā)明計(jì)算機(jī)的時(shí)代?!?黃仁勛表示
    的頭像 發(fā)表于 01-21 10:08 ?607次閱讀

    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署OpenCV

    視覺(jué)領(lǐng)域最有力的研究工具。在深度學(xué)習(xí),我們會(huì)經(jīng)常接觸到兩個(gè)名稱,圖像處理和計(jì)算機(jī)視覺(jué),它們之間有什么區(qū)別呢? 圖像處理 (Image Pr
    發(fā)表于 12-14 09:31

    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署OpenCV

    力的研究工具。在深度學(xué)習(xí),我們會(huì)經(jīng)常接觸到兩個(gè)名稱,圖像處理和計(jì)算機(jī)視覺(jué),它們之間有什么區(qū)別呢?圖像處理(ImageProcessing)目的:圖像處理主要集中在
    的頭像 發(fā)表于 12-14 09:10 ?1140次閱讀
    AI模型部署邊緣設(shè)備的奇妙之旅:如何在邊緣端部署<b class='flag-5'>OpenCV</b>

    虛擬內(nèi)存對(duì)計(jì)算機(jī)性能的影響

    在現(xiàn)代計(jì)算機(jī)系統(tǒng),內(nèi)存管理是確保系統(tǒng)高效運(yùn)行的關(guān)鍵因素之一。虛擬內(nèi)存技術(shù)作為內(nèi)存管理的核心組成部分,對(duì)于提升計(jì)算機(jī)性能和用戶體驗(yàn)起著至關(guān)重要的作用。 一、虛擬內(nèi)存的概念 虛擬內(nèi)存是一
    的頭像 發(fā)表于 12-04 09:17 ?4109次閱讀

    工業(yè)中使用哪種計(jì)算機(jī)?

    在工業(yè)環(huán)境,工控機(jī)被廣泛使用。這些計(jì)算機(jī)的設(shè)計(jì)可承受極端溫度、灰塵和振動(dòng)等惡劣條件。它們比標(biāo)準(zhǔn)消費(fèi)類(lèi)計(jì)算機(jī)更耐用、更可靠。工業(yè)計(jì)算機(jī)可控制機(jī)器、監(jiān)控流程并實(shí)時(shí)收集數(shù)據(jù)。其堅(jiān)固的結(jié)構(gòu)和
    的頭像 發(fā)表于 11-29 14:07 ?918次閱讀
    工業(yè)中使用哪種<b class='flag-5'>計(jì)算機(jī)</b>?

    量子計(jì)算機(jī)與普通計(jì)算機(jī)工作原理的區(qū)別

    超越世界上最強(qiáng)大的超級(jí)計(jì)算機(jī),完成以前不可想象的任務(wù)!這意味著量子計(jì)算機(jī)可能會(huì)徹底改變我們的生活。 在本文中,我們將先了解普通計(jì)算機(jī)的工作原
    的頭像 發(fā)表于 11-24 11:00 ?2155次閱讀
    量子<b class='flag-5'>計(jì)算機(jī)</b>與普通<b class='flag-5'>計(jì)算機(jī)</b>工作原理的區(qū)別

    新思科技如何應(yīng)對(duì)量子計(jì)算機(jī)的威脅

    隨著技術(shù)發(fā)展的突飛猛進(jìn),量子計(jì)算機(jī)的威脅日益凸顯。盡管量子計(jì)算機(jī)有望在天氣預(yù)報(bào)、藥物研發(fā)和基礎(chǔ)物理學(xué)等領(lǐng)域帶來(lái)革命性的變革,但它也對(duì)現(xiàn)行加密體系構(gòu)成了顯著威脅。這種威脅并非僅限于未來(lái);如今截獲的任何
    的頭像 發(fā)表于 11-18 09:33 ?1195次閱讀

    工業(yè)計(jì)算機(jī)類(lèi)型介紹

    ,各行各業(yè)80%的企業(yè)依靠計(jì)算機(jī)進(jìn)行日常運(yùn)營(yíng),使其成為成功不可或缺的工具。從小型企業(yè)到大型企業(yè),計(jì)算機(jī)已成為工業(yè)領(lǐng)域的支柱,推動(dòng)著增長(zhǎng)并推動(dòng)企業(yè)向前發(fā)展。在本文中,我們
    的頭像 發(fā)表于 11-04 15:56 ?851次閱讀
    工業(yè)<b class='flag-5'>計(jì)算機(jī)</b>類(lèi)型介紹

    【小白入門(mén)必看】一文讀懂深度學(xué)習(xí)計(jì)算機(jī)視覺(jué)技術(shù)及學(xué)習(xí)路線

    一、什么是計(jì)算機(jī)視覺(jué)?計(jì)算機(jī)視覺(jué),其實(shí)就是教機(jī)器怎么像我們人一樣,用攝像頭看看周?chē)氖澜?,然后理解它。比如說(shuō),它能認(rèn)出這是個(gè)蘋(píng)果,或者那邊有
    的頭像 發(fā)表于 10-31 17:00 ?1591次閱讀
    【小白入門(mén)必看】一文讀懂深度學(xué)習(xí)<b class='flag-5'>計(jì)算機(jī)</b><b class='flag-5'>視覺(jué)</b><b class='flag-5'>技術(shù)</b>及學(xué)習(xí)路線