四、色彩空間

一、色彩空間

1、什么是色彩空間?
色彩空間是定義的顏色范圍。

2、常見的色彩空間有哪些?
①RGB
在這里插入圖片描述在這里插入圖片描述

②HSV
在這里插入圖片描述
在OpenCV中,Hue的值為0~180°,之所以不是360°是因為,8位存不下,故進行歸一化操作,使得Hue取值在0 ~180°,可以通過一個字節來存儲。
③HIS
Hue:色調
Intensity:強度
Saturation :飽和度
④YCrCb
主要在早期的人的皮膚檢測方面應用
⑤YUV
Android開發中常用,Linux的色彩空間

3、色彩空間之間的相互轉化

import cv2def color_space(image):gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)cv2.imshow("gray",gray)hsv = cv2.cvtColor(image,cv2.COLOR_BGR2HSV)cv2.imshow("hsv",hsv)yuv = cv2.cvtColor(image,cv2.COLOR_BGR2YUV)cv2.imshow("yuv",yuv)ycrcb = cv2.cvtColor(image,cv2.COLOR_BGR2YCrCb)cv2.imshow("ycrcb",ycrcb)src = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR
cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image",src)
t1 = cv2.getTickCount()
color_space(src)
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間
print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms
cv2.waitKey(0)cv2.destroyAllWindows()

運行效果圖如下:在這里插入圖片描述
在這里插入圖片描述

二、對視頻中的目標(青色水杯)進行跟蹤

在這里插入圖片描述
cv2.inRange(hsv,lowerb=lower,upperb=upper):對HSV顏色過濾,lowerb和upperb需要查上面的表進行顏色轉換
方法一:目標物體白色,其余黑色

import cv2
import numpy as npdef extrace_object():capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame = capture.read()if ret==False:breakhsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)lower = np.array([78,43,46])#由于水杯是青色的故需要根據表格選出hsv對應的min值upper = np.array([99,255,255])#由于水杯是青色的故需要根據表格選出hsv對應的max值mask = cv2.inRange(hsv,lowerb=lower,upperb=upper)cv2.imshow("video",frame)cv2.imshow("mask",mask)c = cv2.waitKey(40)if c==27:breakt1 = cv2.getTickCount()
extrace_object()
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間
print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms
cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:在這里插入圖片描述
在這里插入圖片描述
方法二:目標物體顏色保留,其余黑色

import cv2
import numpy as npdef extrace_object():capture = cv2.VideoCapture("G:/Juptyer_workspace/study/data/yy.mp4")while(True):ret,frame = capture.read()if ret==False:breakhsv = cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)lower = np.array([78,43,46])#由于水杯是青色的故需要根據表格選出hsv對應的min值upper = np.array([99,255,255])#由于水杯是青色的故需要根據表格選出hsv對應的max值mask = cv2.inRange(hsv,lowerb=lower,upperb=upper)dst = cv2.bitwise_and(frame,frame,mask=mask)cv2.imshow("video",frame)#cv2.imshow("mask",mask)cv2.imshow("dst",dst)c = cv2.waitKey(40)if c==27:breakt1 = cv2.getTickCount()
extrace_object()
t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間
print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms
cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:在這里插入圖片描述
在這里插入圖片描述

三、對彩色圖像三顏色通道進行分割顯示并合并顯示

cv2.split(src):對src三顏色通道的彩色圖像進行分割
cv2.merge([b,g,r]):將b,g,r三個單顏色通道圖像進行合并

import cv2
import numpy as npsrc = cv2.imread("G:/Juptyer_workspace/study/opencv/opencv3/cat.png")#BGR
cv2.namedWindow("input image",cv2.WINDOW_AUTOSIZE)
cv2.imshow("input image",src)
t1 = cv2.getTickCount()b,g,r = cv2.split(src)#拆分彩色通道圖像
cv2.imshow("blue",b)
cv2.imshow("green",g)
cv2.imshow("red",r)src = cv2.merge([b,g,r])#將拆分的三個單顏色通道進行合并還原
src[:,:,0]=0#將第0個顏色通道,即B顏色通道賦值為0
cv2.imshow("changed",src)t2 = cv2.getTickCount()
time = (t2-t1)/cv2.getTickFrequency()#顯示當前運行時間
print("time:%s ms"%(time*1000))#輸出當前運行時間單位為ms
cv2.waitKey(0)cv2.destroyAllWindows()

效果圖如下:在這里插入圖片描述

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/378043.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378043.shtml
英文地址,請注明出處:http://en.pswp.cn/news/378043.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle LOB 詳解

一. 官方說明Oracle 11gR2 文檔:LOB Storagehttp://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_tables.htm#ADLOB45267Oracle 10gR2 文檔:LOBs in Tableshttp://download.oracle.com/docs/cd/B19306_01/appdev.102/b14249/adlob_t…

FIFA的完整形式是什么?

國際足聯:國際足球聯合會 (FIFA: Federation Internationale de Football Association) FIFA is an abbreviation of the "Federation Internationale de Football Association" in French. It is also known as the International Federation of Associa…

POJ 1654 Area

題意:從原點出發,沿著8個方向走,每次走1個點格或者根號2個點格的距離,最終回到原點,求圍住的多邊形面積。分析:直接記錄所經過的點,然后計算多邊形面積。注意,不用先保存所有的點&am…

【C++ grammar】重載、內聯、變量作用域、帶默認參數的函數

目錄1、變量的作用域1. 變量的作用域分類2. Unary Scope Resolution (一元作用域解析運算符)2、重載函數3、帶有默認參數值的函數4、重載函數 VS 帶有默認參數值的函數5、內聯函數(Inline Function)1. 普通函數的優缺點2. 使用內聯函數3. 定義內聯函數4.…

五、像素運算

一、相關概念 1、算術運算 Ⅰ加減乘除 Ⅱ調節亮度 Ⅲ調整對比度 2、邏輯運算 Ⅰ與或非 Ⅱ遮罩層控制 二、圖像算術運算(加減乘除均值方差) 其中圖像的加減乘除需要保證兩張圖像的大小相同 import cv2 import numpy as npdef add(src1,src2):dst cv2.add(src1,src2)cv2.im…

創建bootstrap項目_使用Bootstrap創建第一個網頁

創建bootstrap項目使用Bootstrap創建第一個網頁 (Create First Webpage with Bootstrap) In the previous article, we learned "how to setup bootstrap?" for a web project. If you haven’t gone through that, it is recommended to read it. Now, in this art…

Chaikin Curve(球面插值)

在兩條折線間完成平滑的過渡是 用畫布做UI 或者做類似地圖編輯器一類的工作的 很常見的任務。 怎么樣化方為圓是決定工作效率的很重要的因素。(當需要編輯的曲線多起來, 復雜起來的時候,這會是件相當繁重的工作) 最容易想到的莫非…

【2020 電設G題 圖像題解】

博主聯系方式: QQ:1540984562 QQ交流群:892023501 群里會有往屆的smarters和電賽選手,群里也會不時分享一些有用的資料,有問題可以在群里多問問。 2022.3.10新增訂閱通知 近期把此專欄設置為了付費模式,可以直接花9.9買這個專欄,買了就可以直接這個專欄的所有文章了。后…

六、ROI和泛洪填充

一、ROI ROI:region of interest,即感興趣區域。 一般主要通過numpy來獲取ROI 將某區域轉變為灰色圖片再覆蓋原圖像 import cv2 import numpy as npsrc cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg") cv2.imshow(&quo…

VS2005 there is no source code available for the current location 解決方案

1.首先試最常規的方法:Clean and then rebuild solution,但是沒有解決 2.進入Tools>Options,選擇Debugging>General 卻掉 Enable address-level debugging 選項,在去掉 Require source files to exactly match the original version. O…

django 靜態數據_如何在Django中使用靜態數據?

django 靜態數據Static Data means those data items that we cannot want to change, we want to use them as it is like audio, video, images, files etc. 靜態數據是指我們不想更改的數據項,我們想像音頻,視頻,圖像,文件等那…

Leetcode226. 翻轉二叉樹(遞歸、迭代、層序三種解法)

目錄題目1、層序法:2、遞歸法:1、先序遍歷(中左右)2、后序遍歷(左右中)3、遞歸中序遍歷為什么不行(左中右)3、迭代法:1、先序遍歷2、中序遍歷3、后序遍歷為什么迭代法的中…

Asp.net 獲取當前目錄的三種方法

方法一: string sPath System.IO.Path.GetDirectoryName(Page.Request.PhysicalPath) 方法二: string sPath System.Web.HttpContext.Current.Request.MapPath("/") 方法三: string s…

一款jQuery立體感動態下拉導航菜單特效

一款jQuery立體感動態下拉導航菜單特效,鼠標經過,在菜單欄上方下拉出一個背景圖片,效果十分不錯的一款jquery特效。 對IE6都是兼容的,希望大家好好研究研究。 適用瀏覽器:IE6、IE7、IE8、360、FireFox、Chrome、Safari、Opera、傲…

七、模糊操作

一、模糊操作基本原理 1,基于離散卷積 2,定義好每一個卷積核 3,不同卷積核得到不同的卷積效果 4,模糊是卷積的一種表象 二、1*3卷積核舉例 每次右移一格,進行對應相乘再求和。1*3的卷積核左右兩邊的元素并沒有處理而…

LeetCode 100. 相同的樹 思考分析

給定兩個二叉樹,編寫一個函數來檢驗它們是否相同。 如果兩個樹在結構上相同,并且節點具有相同的值,則認為它們是相同的。 示例 1: 輸入: 1 1 / \ / 2 3 2 3 [1,2,3], [1,2,3]輸出: true 示例 2: 輸入: 1 1 / 2 2 [1,2], [1,null,2]輸…

在Python中以二進制格式輸入數字

Syntax to convert binary value to an integer (decimal format), 將二進制值轉換為整數(十進制格式)的語法, int(bin_value, 2)Here, 這里, bin_value should contain the valid binary value bin_value應該包含有效的二進制值 2 is the base value …

八、邊緣保留濾波(EPF)

一、概念 邊緣保留濾波(EPF,edge preserving filtering) 二、高斯雙邊 cv2.bilateralFilter(image,0,100,15)100為差異,15為周圍的區域 import cv2 import numpy as npdef bilateralFilter(image):dst cv2.bilateralFilter(image,0,100,15)cv2.imshow(bilater…

LintCode 375. 克隆二叉樹(深復制)

先序遍歷構造二叉樹 TreeNode * preorder(TreeNode * root){if(rootNULL) return NULL;TreeNode * ans;ansnew TreeNode(root->val);if(root->left!NULL){ans->leftpreorder(root->left);}if(root->right!NULL){ans->rightpreorder(root->right);}return…

關于ECMAScript基礎入門的分享

目錄 ECMAScript基礎入門1. 介紹2. 變量與數據類型2.1 變量2.2 數據類型 3. 運算符3.1 算術運算符3.2 比較運算符 4. 控制流4.1 條件語句4.2 循環語句 5. 函數6. 對象與數組6.1 對象6.2 數組 7. 總結 ECMAScript基礎入門 1. 介紹 ECMAScript是JavaScript的標準規范&#xff0…