爲了給每個像素的飽和度值添加常數值,我在雙循環中做到這一點。我想知道是否有更簡單和更快的命令實現這一點。如何使用opencv更改飽和度值?
9
A
回答
6
Mat img(200, 300, CV_8UC1);
Mat saturated;
double saturation = 10;
double scale = 1;
// what it does here is dst = (uchar) ((double)src*scale+saturation);
img.convertTo(saturated, CV_8UC1, scale, saturation);
編輯
如果飽和度,你的意思是在HSV圖像的S信道,則需要使用split()
到separe你的形象在三個通道,飽和度校正應用到S信道,並然後將它們與merge()
放在一起。
2
// BGR to HSV
cvCvtColor(img, img, CV_BGR2HSV);
for (int i=0; i < img.rows ; i++)
{
for(int j=0; j < img.cols; j++)
{
// You need to check this, but I think index 1 is for saturation, but it might be 0 or 2
int idx = 1;
img.at<cv::Vec3b>(i,j)[idx] = new_value;
// or:
// img.at<cv::Vec3b>(i,j)[idx] += adds_constant_value;
}
}
// HSV back to BGR
cvCvtColor(img, img, CV_HSV2BGR);
0
對於我試過的實驗,分離hsv值,調整個別通道,然後進行合併的替代方法提供了更好的性能。下面是我工作快很多倍相比,通過像素循環:
(h, s, v) = cv2.split(imghsv)
s = s*satadj
s = np.clip(s,0,255)
imghsv = cv2.merge([h,s,v])
注意,我必須轉換的值BGR2HSV轉型期間FLOAT32飽和改造由於UINT8(默認)溢出期間避免負值:
imghsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV).astype("float32")
,並轉換回我的飽和度調整後爲默認UINT8:
imgrgb = cv2.cvtColor(imghsv.astype("uint8"), cv2.COLOR_HSV2BGR)
相關問題
- 1. 如何在.NET中使用ColorMatrix來更改亮度,顏色,飽和度,色調
- 2. OpenCV cvtColor CV_BGR2HSV CV_32FC3飽和度範圍
- 3. 如何使用Opencv 2.3從灰度圖像更改像素值?
- 4. 如何去色飽和度?
- 5. 如何更改SKSpriteNode飽和度? - 斯威夫特
- 6. CSS3 HSL - 飽和度值(僅)
- 7. 無法保存已更改的位圖(已更改飽和度)
- 8. 將圖像緩衝區的指針傳遞給OpenCV並更改飽和度?
- 9. 如何修改UIColor的色調,亮度和飽和度?
- 10. LESS:色調,飽和度和亮度 - 如何使用?
- 11. 如何使用fabric.js設置對比度和飽和度
- 12. 如何用Scipy模擬飽和度和閾值?
- 13. AS3用閃存更改翻轉飽和度
- 14. 如何在ImageMagick中更改亮度色調和部分去飽和圖像?
- 15. 如何更改AS3中的影片剪輯的色調和飽和度
- 16. 鼠標XY改變圖像飽和度
- 17. Matlab fwrite飽和度
- 18. UIColor飽和度亮度值與顏色的常規飽和度亮度值不同
- 19. 如何使用php應用飽和度照片gd
- 20. 橙色的色調/飽和度值
- 21. Markerfacecolor忽略飽和度值(蟒蛇,matplotlib)
- 22. 如何使用OpenCV更改圖像的對比度?
- 23. 如何更改ios中錄製的視頻的飽和度,亮度和對比度
- 24. 從色相飽和度直方圖皮膚檢測 - OpenCV Python
- 25. 如何使用UISlider快速調整亮度對比度飽和度
- 26. 在OpenCV中標準化攝像頭輸入? (對比度/飽和度/亮度等)
- 27. Android:使用色調,飽和度和亮度定義顏色
- 28. 如何從UIColor中獲得色調,飽和度和亮度?
- 29. Bootstrap Alerts顏色飽和度
- 30. gnuplot pdfcairo色彩飽和度
上述功能適用於任何類型的矩陣工作,只需蘇爲你的類型選擇CV_8UC1。 convertTo函數的文檔可以在這裏找到(http://opencv.itseez.com/modules/core/doc/basic_structures.html#mat-convertto) – Chris 2011-12-16 15:54:11
是的,如果你只想對待S頻道首先需要將其分開。至於哪個更快 - 我不知道,試試看看! – Chris 2011-12-16 16:15:31