国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用OpenCV中的簡單計算機視覺技術創建我們自己的“隱形衣”

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

掃碼添加小助手

加入工程師交流群

我計劃分享一些有趣的實戰項目,或許達不到商用的級別,但是希望能在大家做項目的時候能夠提供一些思路!如果對你有所幫助,給我點贊 & 在看,讓我知道對你有幫助哈!

基于OpenCV的顏色檢測和分割的隱形斗篷

如果你是個哈利波特迷,你就會知道什么是隱形衣。是的!這是哈利波特用來隱身的隱形衣。當然,我們都知道隱形衣不是真的——它都是圖形上的詭計。

在這篇文章中,我們將學習如何使用OpenCV中的簡單計算機視覺技術創建我們自己的“隱形衣”。文末會分享 C++python的代碼。

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

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

它的原理是什么?

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

我們用一塊紅色的布做我們的斗篷。為什么是紅色呢?為什么不綠色的嗎?當然,我們可以用綠色,紅色不是魔術師的顏色嗎?除了此之外,像綠色或藍色這樣的顏色也可以稍微調整一下。

其基本思想如下:

1. 捕獲并存儲背景幀。

2. 使用顏色檢測算法檢測紅色布料。

3. 將紅色的布料分割成一個mask。

4. 生成最后的增廣輸出,創造神奇的效果。

上面的GIF簡單地解釋了算法的所有階段。現在我們將詳細討論每一步。

步驟1:捕捉并存儲背景幀

如上所述,關鍵思想是將當前與布料相對應的幀像素替換為背景像素,從而產生一件隱身衣的效果。為此,我們需要存儲一個背景幀。

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()方法使我們能夠通過相機捕獲最新的幀(存儲在變量‘background’中),它還返回一個布爾值(True/False存儲在‘ret’中)。如果一個幀被正確讀取,它將為真。所以你可以通過檢查這個返回值來檢查視頻的結束。

為什么捕獲背景圖像使用'循環' ?

因為背景是靜態的,我們不能簡單地使用一個幀嗎?當然,但是與多幀圖像相比,捕獲的圖像有點暗。這是因為相機剛剛開始捕捉幀,因此它的參數還不穩定。因此,使用for循環捕獲靜態背景的多個圖像就可以完成這個任務。

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

第二步:檢測紅色

因為我們使用了一塊紅色的布來將它轉換成一件隱形斗篷,所以我們將著重于在框架中檢測紅色。

聽起來簡單嗎?我們有一個RGB(紅-綠-藍)圖像,使用簡單閾值的R通道來得到我們的mask。結果證明,這將并不會特別有效,因為RGB值是高度敏感的照明。因此,即使斗篷是紅色的,也可能有一些區域,由于陰影,相應像素的紅色通道值相當低。

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

HSV顏色空間是什么?

HSV顏色空間表示使用三個值的顏色

1.色相(Hue):這個通道對顏色信息進行編碼。色相可以被認為是一個角度,0度對應紅色,120度對應綠色,240度對應藍色。

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

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

不像RGB是根據三原色來定義的,HSV的定義方式類似于人類感知顏色的方式。

對于我們的應用而言,使用HSV顏色空間的主要優點是顏色/色調/波長僅由色相組件表示。

要了解不同的色彩空間,請參考我們關于色彩空間的詳細博客。

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

所以當我說,我需要一個特定的顏色,選擇色相組件,然后根據飽和度組件,我得到了那個顏色的不同的陰影,進一步根據值組件,我得到了一個顏色的特定陰影的不同的強度。

在下面的代碼中,我們首先捕獲一個活動幀,將圖像從RGB轉換為HSV顏色空間,然后定義一個特定范圍的H-S-V值來檢測紅色。

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函數簡單地返回一個二值化掩碼,其中白色像素(255)表示屬于上限和下限范圍的像素,黑色像素(0)不屬于上限和下限范圍的像素。

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

我們使用范圍0-10和170-180,以避免檢測皮膚為紅色。飽和度使用較高范圍120-255的值,因為我們的布料應該是高度飽和的紅色。亮度值在的較低范圍是70,這樣我們也可以在布料的褶皺中檢測到紅色。

mask1 = mask1 + mask2

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

現在,您已經了解了如何進行顏色檢測,您可以更改H-S-V范圍,并使用一些其他的單色布來代替紅色。事實上,綠色的布比紅色的效果更好,因為綠色離人的膚色差異最大。

第三步:將檢測到的紅色布料分割開來

在上一步中,我們生成了一個mask來確定幀中與檢測到的顏色相對應的區域。我們精煉這個mask,然后用它從frame上分割布料。下面的代碼說明了它是如何實現的。

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:生成最終的增強輸出,以創建一個神奇的效果。

最后,我們將檢測到的紅色區域的像素值替換為靜態背景對應的像素值,最后生成一個增強輸出,產生神奇的效果,將我們的布料變成了一件隱身斗篷。為此,我們首先使用bitwise_and操作創建一個像素值對應于檢測區域的圖像,像素值等于靜態背景的像素值,然后將輸出添加到我們從中分割出紅布的圖像(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)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 圖像
    +關注

    關注

    2

    文章

    1096

    瀏覽量

    42344
  • 計算機視覺
    +關注

    關注

    9

    文章

    1715

    瀏覽量

    47641
  • OpenCV
    +關注

    關注

    33

    文章

    652

    瀏覽量

    44826

原文標題:OpenCV黑魔法之隱身衣

文章出處:【微信號:Unfinished_coder,微信公眾號:機器視覺CV】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    OpenCV首次到訪奧比光并展開深度交流

    1月15日,OpenCV創始人及核心團隊首次到訪奧比光,雙方圍繞3D視覺硬件與計算機視覺軟件的協同創新,展開深度交流。
    的頭像 發表于 01-21 15:51 ?414次閱讀

    【上海晶珩睿莓 1 單板計算機】人臉識別

    計算機視覺庫,廣泛應用于圖像處理、視頻分析和機器學習等領域。 為了避免影響系統 Python,采用虛擬環境的方案。 創建并激活虛擬環境 mkdir ~/cv && cd
    發表于 01-04 20:22

    上海計算機視覺企業行學術沙龍走進西井科技

    12月5日,由中國圖象圖形學學會青年工作委員會(下簡稱“青工委”)、上海市計算機學會計算機視覺專委會(下簡稱“專委會”)聯合主辦,上海西井科技股份有限公司、江蘇路街道商會承辦的“上海計算機
    的頭像 發表于 12-16 15:39 ?599次閱讀

    使用代理式AI激活傳統計算機視覺系統的三種方法

    當前的計算機視覺系統擅長于識別物理空間與流程的事件,卻難以詮釋場景細節及其意義,也無法推理后續可能發生的情況。
    的頭像 發表于 12-01 09:44 ?654次閱讀

    2025中國計算機大會DPU技術論壇成功舉辦

    近日,備受矚目的第22屆中國計算機大會(CNCC2025)在哈爾濱開幕。本屆大會注冊人數突破1.2萬人,匯聚了來自全球計算機領域的頂尖學者、產業領袖、青年學子及國際組織代表。大會以“數智賦能、無限可能”為主題,旨在深度探討數字智能技術
    的頭像 發表于 11-02 09:29 ?729次閱讀

    蔚來出席CNCC 2025中國計算機大會技術論壇

    2025年10月23日,CNCC 2025中國計算機大會技術論壇「AI落地應用的主戰場——智能電動汽車」在哈爾濱成功舉行。論壇聚焦計算機技術與汽車產業的深度融合,匯聚產業界與學術界頂尖專家,圍繞世界
    的頭像 發表于 10-27 15:47 ?660次閱讀

    STM32計算機視覺開發套件:B-CAMS-IMX攝像頭模塊技術解析

    STMicroelectronics用于 STM32開發板的B-CAMS-IMX攝像頭模塊提供強大的硬件集,可處理多種計算機視覺場景和用例。該模塊具有高分辨率500萬像素IMX335LQN
    的頭像 發表于 10-20 09:46 ?1308次閱讀
    STM32<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>開發套件:B-CAMS-IMX攝像頭模塊<b class='flag-5'>技術</b>解析

    易控智駕榮獲計算機視覺頂會CVPR 2025認可

    近日,2025年國際計算機視覺與模式識別頂級會議(IEEE/CVF Conference on Computer Vision and Pattern Recognition,CVPR 2025)在美國田納西州納什維爾召開。
    的頭像 發表于 07-29 16:54 ?1231次閱讀

    工業計算機的重要性

    工業計算機對某些行業至關重要。我們將在下面詳細解釋這些行業的工業計算機應用。1.制造與工業自動化工業級計算機非常適合制造工廠,特別是那些想
    的頭像 發表于 07-28 16:07 ?583次閱讀
    工業<b class='flag-5'>計算機</b>的重要性

    自動化計算機經過加固后有什么好處?

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

    自動化計算機的功能與用途

    工業自動化是指利用自動化計算機來控制工業環境的流程、機器人和機械,以制造產品或其部件。工業自動化的目的是提高生產率、增加靈活性,并提升制造過程的質量。工業自動化在汽車制造中體現得最為明顯,其中許多
    的頭像 發表于 07-15 16:32 ?752次閱讀
    自動化<b class='flag-5'>計算機</b>的功能與用途

    工業計算機與商用計算機的區別有哪些

    工業計算機是一種專為工廠和工業環境設計的計算系統,具有高可靠性和穩定性,能夠應對惡劣環境下的自動化、制造和機器人操作。其特點包括無風扇散熱技術、無電纜連接和防塵防水設計,使其在各種工業自動化場景
    的頭像 發表于 07-10 16:36 ?758次閱讀
    工業<b class='flag-5'>計算機</b>與商用<b class='flag-5'>計算機</b>的區別有哪些

    工業計算機如何設計用于沖擊和振動

    工業計算機是為挑戰消費級系統耐用性的環境而構建的。在制造業、運輸業、國防和采礦業等領域,計算機面臨著持續的沖擊、振動和其他物理壓力。設計這些系統以在這種條件下保持可靠需要卓越的工程和創新技術。本文
    的頭像 發表于 05-19 15:27 ?508次閱讀
    工業<b class='flag-5'>計算機</b>如何設計用于沖擊和振動

    利用邊緣計算和工業計算機實現智能視頻分析

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

    基于LockAI視覺識別模塊:C++圖像的基本運算

    在圖像處理,理解圖像的基本操作是掌握計算機視覺技術的關鍵。本文章將介紹基于LockAI視覺識別模塊下O
    的頭像 發表于 05-06 16:20 ?724次閱讀
    基于LockAI<b class='flag-5'>視覺</b>識別模塊:C++圖像的基本運算