回答
你可以這樣做:
- 找到黃多邊形
- 填充多邊形的內部
- 只複製多邊形內部的黑色初始化圖像
找到黃色多邊形
不幸的是,您使用抗鋸齒繪製黃線,因此黃色不是純黃色,但由於插值而具有更寬的範圍。這也影響最終的結果,因爲一些不是黃色像素將被包括在結果圖像中。您可以通過不使用抗鋸齒功能輕鬆解決此問題。
所以最好的選擇是將圖像轉換成HSV空間(在這裏更容易分割單一顏色),並且只保留純黃色範圍內的值。
如果您不使用抗鋸齒功能,則甚至不需要轉換爲HSV,只需保留其值爲純黃色的點。
填充多邊形的內部 您可以使用floodFill
來填充多邊形。你需要一個起點。既然我們不知道一個點是否在多邊形內部(並且由於多邊形不是凸的,因此可能不安全),我們可以安全地假設點(0,0),即左上角該圖像在多邊形之外。然後我們可以填充多邊形的外部,然後反轉結果。
只複製多邊形黑色初始化圖像內
一旦你的面膜,只需使用copyTo
與口罩,黑色圖像下的非零像素的內容複製面具。
這裏全碼:
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
Mat3b img = imread("path_to_image");
// Convert to HSV color space
Mat3b hsv;
cvtColor(img, hsv, COLOR_BGR2HSV);
// Get yellow pixels
Mat1b polyMask;
inRange(hsv, Scalar(29, 220, 220), Scalar(31, 255, 255), polyMask);
// Fill outside of polygon
floodFill(polyMask, Point(0, 0), Scalar(255));
// Invert (inside of polygon filled)
polyMask = ~polyMask;
// Create a black image
Mat3b res(img.size(), Vec3b(0,0,0));
// Copy only masked part
img.copyTo(res, polyMask);
imshow("Result", res);
waitKey();
return 0;
}
結果:
注意
請注意,有結果圖象中幾乎黃色像素。如上所述,這是由於抗鋸齒造成的。
您是如何找到HSV範圍內黃色值的範圍的?我正在使用此網站,http://www.colorspire.com/rgb-color-wheel/。我的意思是保持色調恆定在42(或60度)並且只是調整飽和度,值會給出範圍。但我錯了 –
查看[這裏](http://stackoverflow.com/a/31465462/5008845)瞭解詳情。黃色是HSV 60°,100%,100%,在OpenCV中,它編碼爲30,255,255。 H通道值減半並且在範圍[0,180]中,S和V在範圍[0,255] – Miki
- 1. OpenCV ROI和邊緣檢測
- 2. OpenCV檢測圖像邊界
- 3. 邊界檢測紙張opencv
- 4. 檢測停車場線路和ROI openCV
- 5. 邊界檢測
- 6. 邊界檢測
- 7. 使用邊緣檢測和邊界框的MATLAB對象檢測
- 8. OpenCV中的邊緣檢測
- 9. 檢測Hough界面JAVA OpenCV
- 10. OpenCV邊界框
- 11. 線條和邊緣檢測器,opencv
- 12. 邊緣檢測iphone opencv
- 13. Android OpenCV邊緣檢測
- 14. 顏色邊緣檢測+ opencv
- 15. OPENCV VS GIMP,邊緣檢測在OpenCV中
- 16. OpenCV中的RotatedRect ROI
- 17. JAVA邊界框/ Collison檢測
- 18. Fabric.js畫布邊界檢測
- 19. 使用python進行圖像邊界檢測opencv
- 20. Canny邊緣檢測器檢測到所述圖像的邊界
- 21. 如何輕鬆檢測2個ROI是否與OpenCv相交?
- 22. 在opencv中檢測臉部何時進入ROI
- 23. 使用OpenCV的邊界框
- 24. 實施邊緣檢測圖像的ROI在Matlab
- 25. 邊緣檢測OpenCV的機器人
- 26. opencv中邊緣的特徵檢測
- 27. OpenCV的Canny邊緣檢測C++
- 28. OpenCV:檢測覆蓋標籤的邊框
- 29. OpenCV - 矩形或五邊形的檢測
- 30. 伽柏邊緣檢測用的OpenCV
如果它總是那種黃色的色調,你可以很容易地使用inRange方法。然後使用findContours來獲得外部輪廓。之後,您可以從該輪廓中繪製填充蒙版,並將蒙版應用於圖像,以僅將蒙版區域複製到新的黑色圖像。 – Micka
你總是有相同的輪廓顏色?它保證在圖像中獨一無二(沒有其他黃色背景點)?每個圖像只有一個黃色輪廓,或者可以是多個? – Miki
@Miki:背景中可能有黃色像素。如果我們發現這種情況,我們將來可以使用不同的顏色。是的,每個圖像只有一個黃色輪廓 –