我是opencv的初學者。我正在使用opencv v2.1。我已將RGB圖像轉換爲HSV圖像。現在我想單獨獲取單個色調Hue,Value和Saturation。我該怎麼辦?我在這裏看到類似的問題,但沒有人回答。請幫助。如何在opencv 2.1中從HSV圖像獲取單通道值圖像?
回答
您可以訪問您在訪問RGB圖像以相同的方式,其中第一通道將成爲H,爲V.對於s第二通道和第三通道
如果您正在使用的OpenCV 2.1,您必須使用的IplImage那麼,對吧? 如果您的HSV圖像是 IplImage *src
。
IplImage* h = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage* s = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
IplImage* v = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1);
// Split image onto the color planes
cvSplit(src, h, s, v, NULL);
cvSplit功能分割的多通道陣列分成多個單信道。糾正我,如果我錯了。 我會推薦使用OpenCV 2.4。它有像cvMat這樣的結構,非常容易處理,就像二維數組一樣。
編輯: 如果您使用的是Mat,那麼您可以輕鬆分離出渠道。 假設您的hsv墊子是Mat img_hsv
。 Then:
vector<Mat> hsv_planes;
split(img_hsv, hsv_planes);
hsv_planes[0] // H channel
hsv_planes[1] // S channel
hsv_planes[2] // V channel
看看你是否可以解決這個問題。
這是一個太:
cv::Mat hsv_image = ...;
std::vector<cv::Mat> hsv_channels;
cv::split(hsv_image, hsv_channels);
cv::Mat h_image = hsv_channels[0];
cv::Mat s_image = hsv_channels[1];
cv::Mat v_image = hsv_channels[2];
感謝您的幫助。 – userXktape
嗨,每個通道的數據類型是墊子。它打印一些像Mat [8 * 8 * CV_8UC3,isCont = true,isSubmat = false,nativeObj = 0x514dee50]。如何以簡單值的形式找到它,以便我可以將其打印在屏幕上,並使用這些值以某種方式預覽顏色,以進行驗證?我會感謝你的幫助。 – Solace
@Solace,請將您的評論作爲一個新問題提交,並提供更多關於您嘗試實現的細節。你還應該包含你的(Java?)代碼。 – Bull
解決方案的Python:
import cv2
from matplotlib import pyplot as plt
# Read image in BGR
img_path = "test.jpg"
img = cv2.imread(img_path)
# Convert BGR to HSV and parse HSV
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = hsv_img[:, :, 0], hsv_img[:, :, 1], hsv_img[:, :, 2]
# Plot result images
plt.imshow("Original", cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.imshow("HSV", hsv_img)
plt.imshow("H", h)
plt.imshow("S", s)
plt.imshow("V", v)
plt.show()
- 1. 獲取圖像中像素的HSV值OpenCV
- 2. OpenCV從Mat圖像獲取像素通道值
- 3. 如何從OpenCV 2中的圖像獲取通道數量?
- 4. OpenCV:分割HSV圖像並通過H通道掃描
- 5. OpenCV自適應閾值HSV圖像
- 6. OpenCV - 從圖像中獲取灰度值
- 7. MATLAB圖像處理:從彩色圖像獲取HSV組件
- 8. 從openCV獲取圖像的特徵值
- 9. 如何使用OpenCV 2.1從圖像中讀取數字
- 10. 在C++ OpenCV的HSV圖像分離
- 11. 如何從ip攝像頭獲取圖像並將圖像存儲在openCV中
- 12. 如何在Python OpenCV中讀取TIFF圖像的Alpha通道?
- 13. 從Opencv攝像機獲取Partial圖像
- 14. 更改python中圖像的hsv值
- 15. 使用OpenCV從圖像序列中獲取中值圖片
- 16. 用於openCV的HSV色輪的圖像?
- 17. 從RGB到HSV的OpenCV圖像轉換閾值痛苦
- 18. 如何從圖像中獲取價值
- 19. 在opencv中獲取LAB圖像的像素值
- 20. OpenCV Java,Read HSV中心像素的值
- 21. OpenCV:如何從攝像頭獲取生YUY2圖像?
- 22. 從圖像中提取RGB通道
- 23. openCV在C中獲取子圖像
- 24. opencv在iphone中獲取子圖像
- 25. 如何從圖庫中獲取圖像
- 26. 從OpenCV + Python獲取HOG圖像特徵?
- 27. 如何使用opencv獲取鳥瞰道路圖像?
- 28. 使用Alpha通道獲取CGPath圖像
- 29. 從HSV直方圖獲取主色值
- 30. 從圖像id中獲取圖像android
你這樣做後,你的寶貝做,怎麼給你重組的H,S, V再次揉成複合圖像? –
嗨,對於第二種方法,每個通道的數據類型是「Mat」。它打印出類似'Mat [8 * 8 * CV_8UC3,isCont = true,isSubmat = false,nativeObj = 0x514dee50]'。如何以簡單值的形式找到它,以便我可以將其打印在屏幕上,並使用這些值以某種方式預覽顏色,以進行驗證? – Solace