opencv檢測圖片上七種顏色,分辨顏色和對應位置

opencv檢測圖片上七種顏色,分辨顏色和對應位置

讀取圖片:使用cv2.imread()函數讀取目標圖片。

轉換顏色空間:通常在HSV顏色空間中進行顏色檢測,因為HSV顏色空間更適合描述顏色的屬性。

定義顏色范圍:為七種顏色定義HSV范圍。例如,紅色、綠色、藍色、黃色、紫色、橙色和青色。

創建掩碼:使用cv2.inRange()函數根據定義的顏色范圍創建掩碼。

位運算:使用掩碼與原圖進行位運算,提取特定顏色的區域。

查找輪廓:使用cv2.findContours()函數查找顏色區域的輪廓。

繪制輪廓:使用cv2.drawContours()函數在原圖上繪制輪廓,以標記顏色的位置。

顏色識別:根據輪廓的位置和掩碼,識別顏色。

import cv2
import numpy as npdef color_detection():"""顏色檢測:return:"""# 讀取圖片image = cv2.imread(r'C:\Users\O_zhenhua.zhang\Desktop\cdc\AutoVehicleControl\vehicle_control_tools\received_image.jpg')# 轉換顏色空間從BGR到HSVhsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)# 定義顏色的HSV范圍color_ranges = {'red':((0, 120, 70), (10, 255, 255)),'green': ((40, 40, 40), (80, 255, 255)),'blue': ((110, 110, 140), (140, 255, 255)),'yellow': ((20, 40, 40), (40, 255, 255)),'purple': ((120, 120, 140), (160, 255, 255)),'orange': ((10, 40, 40), (20, 255, 255)),'cyan': ((160, 160, 180), (180, 255, 255))}# 檢測顏色并繪制輪廓for color_name, (lower, upper) in color_ranges.items():# 創建顏色掩碼mask = cv2.inRange(hsv_image, np.array(lower), np.array(upper))# 用掩碼提取特定顏色的區域color_image = cv2.bitwise_and(image, image, mask=mask)# 尋找輪廓contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 繪制輪廓for contour in contours:area = cv2.contourArea(contour)if area > 1000:  # 可根據需要調整面積閾值cv2.drawContours(image, [contour], -1, (0, 255, 0), 3)  # 綠色輪廓# 顯示結果cv2.imshow('Color Detection', image)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':color_detection()

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

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

相關文章

RabbitMQ 修改默認密碼

RabbitMQ的一些常用命令 #啟動rabbitmq service rabbitmq-server start# 查看rabbitMQ的運行狀態 service rabbitmq-server status# 開啟rabbitMQ的后臺管理插件 rabbitmq-plugins enable rabbitmq_management # 重啟RabbitMQ服務 service rabbitmq-server restart RabbitMQ的…

AcWing 797:差分 ← 一維差分模板題

【題目來源】https://www.acwing.com/problem/content/799/【題目描述】 輸入一個長度為 n 的整數序列。 接下來輸入 m 個操作,每個操作包含三個整數 l,r,c,表示將序列中 [l,r] 之間的每個數加上 c。 請你輸出進行完所有操作后的序列。【輸入格式】 第一…

富格林:正規操作實現穩健出金

富格林認為,當下的金融市場,投資者進行理財都會特別關注盈利效率高的產品,而近年來興起的現貨黃金,其高效的盈利效率吸引著大批朋友關注。不過,要想在這盈利出金,就得學習掌握正規的交易策略。下面富格林將…

onnx模型修改:去掉Dropout層

文章目錄 嘗試1:強行設置dropout層train mode為False嘗試2:找到onnx模型中的dropout, train mode設置為False嘗試3:直接刪除dropout層,連接其輸入輸出結語 最近訓練模型使用了tinyvit,性能挺強的: 但是導出…

超細毛搭配超寬設計,一款更呵護牙齦的牙刷

牙齦敏感的時候,刷牙特別難受,最近試了試惠百施(EBISU)65孔寬頭軟毛牙刷,感覺它的口腔護理體驗很不錯。這款牙刷的設計獨特,采用寬頭設計,一次就能刷兩排牙齒,極大地提高了清潔效率。…

RS232自由轉Profinet協議網關模塊連接1200PLC與掃碼槍通訊及手動清零案例

一、RS232和Profinet這兩種通訊接口的特點和應用場景: RS232是一種串行通訊接口標準,常用于連接計算機和外部設備,傳輸速率較低但穩定可靠。Profinet則是一種工業以太網通訊協議,具有高速、實時性強的特點,適用于工業…

C/C++語言通過動態鏈表實現按需內存分配和使用(Linux Ubuntu 24.04環境)

我認為比較理想的內存使用方式應該實現這幾個特性: 1. 分配一塊能滿足大多數情況下需求的內存,比如80%的情況下都不需要再次分配內存。 2. 對另外20%需要較多內存的情況,可以通過動態鏈表按需追加新的內存塊。 3. 要對總共消耗的內存有一個…

【C語言】解決C語言報錯:Dangling Pointer

文章目錄 簡介什么是Dangling PointerDangling Pointer的常見原因如何檢測和調試Dangling Pointer解決Dangling Pointer的最佳實踐詳細實例解析示例1:釋放內存后未將指針置為NULL示例2:返回指向局部變量的指針示例3:指針懸空后繼續使用示例4&…

引領未來:AI Native與物聯網(IoT)的革命性融合

引領未來:AI Native與物聯網(IoT)的革命性融合 在數字化轉型的浪潮中,AI Native作為一種新興的軟件開發模式,正逐漸成為推動技術創新的核心力量。與此同時,物聯網(IoT)技術通過連接物理世界與數字世界,不斷擴展其應用…

自編碼器筆記

編碼器解碼器自編碼器 先壓縮特征,再通過特征還原。 判斷還原的和原來的是否相等 encode data 在一個“潛在空間”里。它的用途是“深度學習”的核心-學習數據的特征并簡化數據表示形式以尋找模式。 變分自編碼器: 1. 首先、假設輸入數據是符合正態分布…

tiny-redis 項目可能的問題

https://build-your-own.org/redis/ 事件循環怎么實現的 首先我將連接包裝為一個 Connect 類,它包含了 socket fd,讀寫緩沖區,連接狀態(這個連接是發送數據還是接收數據)等成員屬性 我會在全局維護一個從 socket fd…

003 選擇排序

文章目錄 先挑最值,再把剩下的挑最值,再把剩下的挑最值。。。 -- 排序函數 function selectionSort(arr) -- 外層循環,從數組的第一個元素開始,對每個元素進行排序 for i 1, #arr do -- 假設當前位置的元素是最小的 local …

LCR 060. 前 K 個高頻元素

給定一個整數數組 nums 和一個整數 k &#xff0c;請返回其中出現頻率前 k 高的元素。可以按 任意順序 返回答案。 示例 1: 輸入: nums [1,1,1,2,2,3], k 2 輸出: [1,2] 示例 2: 輸入: nums [1], k 1 輸出: [1] 提示&#xff1a; 1 < nums.length < 105k 的取值范…

【SQL Server點滴積累】Setup SQL Server 2008 Database Mirror (二)

【SQL Server點滴積累】Setup SQL Server 2008 Database Mirror (一)-CSDN博客今天分享SQL Server 2008 R2搭建數據庫鏡像(Database Mirror)https://blog.csdn.net/ncutyb123/article/details/139749117?spm1001.2014.3001.5501本篇Blog基于以上Blog步驟進行SQL Server 2008 R…

python03——文件操作(new)

“變量”open&#xff08;‘文件路徑’&#xff0c;‘模式’&#xff09; //注意加引號 “變量”.write( ) //write函數是寫的是字符串&#xff0c;如果你寫的東西不是字符串&#xff0c;要寫成write&#xff08;str&#xff08;。。&#xff09;&#xff09; “變量”.read…

vue3學習教程第四十節(pinia的用法注意事項解構store)

pinia 主要包括以下五部分&#xff0c;經常用到的是 store、state、getters、actions 以下使用說明&#xff0c;注意事項&#xff0c;僅限于 vue3 setup 語法糖中使用&#xff0c;若使用選項式 API 請直接查看官方文檔&#xff1a; 一、前言&#xff1a; pinia 是為了探索 vu…

03_意向鎖

意向鎖&#xff08;Intention Lock&#xff09; 文章目錄 意向鎖&#xff08;Intention Lock&#xff09;簡介類型原理意向鎖加鎖流程鎖兼容矩陣使用場景示例總結擴展&#xff1a;意向鎖和共享鎖排他鎖的加鎖流程假設的場景和前提已加鎖的情況新的加鎖請求加鎖流程鎖的兼容性矩…

力扣算法-9.回文數

9.回文數 個人思考 首先從示例2可以看出符號也算在整數這個整體內&#xff0c;可以先判斷整數若為負數則返回false其次很容易就會想到遍歷兩次&#xff0c;從頭以及從尾&#xff0c;遍歷得到的結果相比較&#xff0c;相同則為回文數 public class Alee9 {public static void …

OpenResty的安裝及高級使用

OpenResty的安裝及高級使用 1. OpenResty的安裝1.1. 二進制版本安裝1.2. 源碼方式安裝2. 日志打印header和body3. 替換body體字符串1. OpenResty的安裝 OpenResty的中文站點:https://openresty.org/cn/ ?? OpenResty的英文站點:https://openresty.org/en/ 1.1. 二進制版本…

【linux基礎】后臺執行命令,防止中斷nohup

前臺運行與后臺運行&#xff1a;前臺運行&#xff0c;就是運行過程一直在屏幕輸出。 目的&#xff1a;1. 提交至后臺 & 2.防止中斷 nohup 1.終端上不要有大量的log出現&#xff0c;后臺運行 (1) & 程序后臺運行 #腳本、修改權限 vi test.sh chmod 777 test.sh#后…