python+opencv處理顏色之將目標(biāo)顏色轉(zhuǎn)換實(shí)例代碼
目標(biāo):將紅色的部分濾出,轉(zhuǎn)化為綠色
下面是代碼+ 效果 + 解釋
import cv2
import numpy as np
def dectfun(frame):
# Convert the frame to HSV color space
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# Define the range for red color in HSV
lower_red1 = np.array([0, 120, 70])
upper_red1 = np.array([10, 255, 255])
lower_red2 = np.array([170, 120, 70])
upper_red2 = np.array([180, 255, 255])
# Create a mask for red color
mask1 = cv2.inRange(hsv, lower_red1, upper_red1)
mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
mask = mask1 + mask2
# Create an output image to show the detected red regions in green
result = frame.copy()
result[mask > 0] = [0, 255, 0] # Change red regions to green
return result
def main():
# Open the webcam
cap = cv2.VideoCapture(1)
while True:
# Read a frame
ret, frame = cap.read()
if not ret:
break
# Detect red regions and highlight them
result = dectfun(frame)
# Display the result
cv2.imshow("Frame", result)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Release the webcam and close all windows
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()

轉(zhuǎn)HSV: 關(guān)于顏色總是要轉(zhuǎn)HSV的
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
掩膜
lower_red1 = np.array([0, 120, 70]) upper_red1 = np.array([10, 255, 255]) lower_red2 = np.array([170, 120, 70]) upper_red2 = np.array([180, 255, 255]) # Create a mask for red color mask1 = cv2.inRange(hsv, lower_red1, upper_red1) mask2 = cv2.inRange(hsv, lower_red2, upper_red2) mask = mask1 + mask2
在這段代碼中,mask 是一個(gè)數(shù)組。具體來說,它是一個(gè)二值圖像(即一個(gè)包含0和255的數(shù)組),表示在HSV顏色空間中紅色區(qū)域的掩膜。 在掩膜區(qū)域內(nèi)的是我們的目標(biāo)lower_red1, upper_red1 標(biāo)注是255 其余是0
再標(biāo)注
# Create an output image to show the detected red regions in green
result = frame.copy()
result[mask > 0] = [0, 255, 0] # Change red regions to green
return result
result = frame.copy()在Python中,變量通常是引用類型,如果你在函數(shù)中直接修改傳入的數(shù)組或?qū)ο?,它們的值?huì)永久改變。result[mask > 0] = [0, 255, 0]這是個(gè)巧妙的句子,當(dāng)mask的對(duì)應(yīng)位置上的值大于零。 然后把result 對(duì)應(yīng)位置上的像素改成綠色
總結(jié)
到此這篇關(guān)于python+opencv處理顏色之將目標(biāo)顏色轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)python opencv目標(biāo)顏色轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Pyinstaller轉(zhuǎn)換.py文件為.exe可執(zhí)行程序過程詳解
這篇文章主要介紹了使用Pyinstaller轉(zhuǎn)換.py文件為.exe可執(zhí)行程序過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
python中文分詞+詞頻統(tǒng)計(jì)的實(shí)現(xiàn)步驟
詞頻統(tǒng)計(jì)就是輸入一段句子或者一篇文章,然后統(tǒng)計(jì)句子中每個(gè)單詞出現(xiàn)的次數(shù),下面這篇文章主要給大家介紹了關(guān)于python中文分詞+詞頻統(tǒng)計(jì)的相關(guān)資料,需要的朋友可以參考下2022-06-06
使用Python實(shí)現(xiàn)圖片位深轉(zhuǎn)換終極指南
圖片位深(Bit Depth)指的是每個(gè)像素用于表示顏色的位數(shù),常見的位深包括,1位,8位,24位和32位,本文主要介紹了如何使用Python實(shí)現(xiàn)圖片位深轉(zhuǎn)換,感興趣的小伙伴可以了解下2025-07-07
python tools實(shí)現(xiàn)視頻的每一幀提取并保存
這篇文章主要為大家詳細(xì)介紹了python tools實(shí)現(xiàn)視頻的每一幀提取并保存,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05
Python使用FastAPI實(shí)現(xiàn)文件上傳接口的最佳方案
在現(xiàn)代 Web 應(yīng)用中,文件上傳幾乎是所有系統(tǒng)的標(biāo)配功能:無論是頭像上傳、文檔提交,還是批量導(dǎo)入數(shù)據(jù), 本文將詳細(xì)介紹如何使用 FastAPI 快速、高效地實(shí)現(xiàn)文件上傳接口,需要的朋友可以參考下2025-11-11
Python中交換列表的元素的三種實(shí)現(xiàn)示例
本文介紹了在Python中交換列表元素的三種方法,包括賦值運(yùn)算符,第三個(gè)變量,pop()函數(shù),每種方法都通過示例代碼進(jìn)行了詳細(xì)解釋,感興趣的可以了解一下2025-12-12
探索Python進(jìn)度條魔法解密任務(wù)進(jìn)展新玩法
在日常編程和應(yīng)用開發(fā)中,展示進(jìn)度條是一種常見的技巧,不僅能夠提供用戶友好的體驗(yàn),還可以顯示任務(wù)執(zhí)行的進(jìn)度,Python作為一種多才多藝的編程語(yǔ)言,提供了多種方法來創(chuàng)建進(jìn)度條,本篇文章將深入探討這些方法,為您呈現(xiàn)各種實(shí)現(xiàn)進(jìn)度條的技術(shù)和技巧2024-01-01

