我正在爲圖像跟蹤編寫一個Python程序,其中我接收最小值和最大值的輸入BGR值,然後過濾實時視頻輸入以僅顯示最小值和最大值之間的值。當輸入在BGR中時,我需要使用HSV過濾視頻。但是,我無法弄清楚如何在numpy中將單個BGR輸入數組轉換爲HSV數組,而無需在整個圖像上使用cvtColor函數。如何使用OpenCV在Python中將單個BGR數組轉換爲HSV數組?
根據我的理解,cv2.cvtColor()函數似乎只適用於整個圖像,但我需要能夠將這些選擇最小和最大BGR數組轉換爲HSV,然後再進行顏色跟蹤。
每當我運行這段代碼時,我都會從cvtColor函數調用的OpenCV代碼中得到以下錯誤。
OpenCV Error: Assertion failed (depth == CV_8U || depth == CV_16U || depth == CV_32F) in cv::cvtColor, file D:\Build\OpenCV\opencv-3.2.0\modules\imgproc\src\color.cpp, line 9710
我已經使用BGR陣列,它的作品,但我特別需要在這裏使用HSV嘗試。
解決此問題的最簡潔方法是什麼?請讓我知道我是否可以提供更多信息,謝謝。我對Python仍然很陌生。
minBGR = np.array([minB, minG, minR])
maxBGR = np.array([maxB, maxG, maxR])
minHSV = cv2.cvtColor(minBGR, cv2.COLOR_BGR2HSV)
maxHSV = cv2.cvtColor(maxBGR, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsvFrame, minHSV, maxHSV)