用OpenCV實現Photoshop演算法(七): 調整色相飽和度
系列文章:
用OpenCV實現Photoshop演算法(四): 色階調整七、調整色相飽和度
Photoshop 的色相/飽和度調整,可以對全圖、紅、黃、綠、青、藍、洋紅六個通道進行設定。
每個通道可設定: 色相(hue), 飽和度(satuation), 明度(Lightness)三個調整值。
(一)顏色空間 (Color Space)
顏色空間也稱彩色模型(又稱彩色空間). 常用顏色空間有:RGB, HSL, CYMK, Lab等。
對於RGB影象,所謂色相/飽和度調整,就是把 RGB 轉為 HSL, 再對色相(H), 飽和度(S), 明度(L)進行調整,然後再轉回RGB.
(二)OpenCV程式碼實現
1,我用OpenCV 編寫了多個 顏色空間轉換函式, 在原始檔 ColorSpace.hpp, ColorSpace.cpp中
2,我用OpenCV 編寫了一個 HSL類,實現色相/飽和度調整。在原始檔 ColorSpace.hpp, ColorSpace.cpp中
3, 使用方法: HSL類有一個屬性channels[7], 定義了7個顏色通道。每個通道有hue, saturation, brightness三個值。設定好所需通道和值,再呼叫HSL類的adjust()方法即可對影象進行 色相/飽和度調整。
4, 原始檔及例程原始碼下載在這裡: 調整色相飽和度原始碼
(三)例程
使用HSL類,進行色相/飽和度調整。
#include <iostream> #include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include "HSL.hpp" using namespace std; using namespace cv; static string window_name = "photo"; static Mat src; static HSL hsl; static int color = 0; static int hue = 180; static int saturation = 100; static int brightness = 100; static void callbackAdjust(int , void *) { Mat dst; hsl.channels[color].hue = hue - 180; hsl.channels[color].saturation = saturation - 100; hsl.channels[color].brightness = brightness - 100; hsl.adjust(src, dst); imshow(window_name, dst); } static void callbackAdjustColor(int , void * ) { hue = hsl.channels[color].hue + 180; saturation = hsl.channels[color].saturation + 100; brightness = hsl.channels[color].brightness + 100; setTrackbarPos("hue", window_name, hue); setTrackbarPos("saturation", window_name, saturation); setTrackbarPos("brightness", window_name, brightness); callbackAdjust(0, 0); } int main() { src = imread("building.jpg"); if ( !src.data ) { cout << "error read image" << endl; return -1; } namedWindow(window_name); createTrackbar("color", window_name, &color, 6, callbackAdjustColor); createTrackbar("hue", window_name, &hue, 2*hue, callbackAdjust); createTrackbar("saturation", window_name, &saturation, 2*saturation, callbackAdjust); createTrackbar("brightness", window_name, &brightness, 2*brightness, callbackAdjust); callbackAdjust(0, 0); waitKey(); return 0; }
執行效果:
原圖:
對藍色通道(color = 5)調整hue, brightness後
再對全圖(color = 0)調整saturation, brightness後
相關推薦
用OpenCV實現Photoshop演算法(七): 調整色相飽和度
系列文章: 用OpenCV實現Photoshop演算法(四): 色階調整 七、調整色相飽和度 Photoshop 的色相/飽和度調整,可以對全圖、紅、黃、綠、青、藍、洋紅六個通道進行設定。 每個通道可設定: 色相(hue), 飽和度(satuat
用OpenCV實現Photoshop演算法(三): 曲線調整
系列文章: 用OpenCV實現Photoshop演算法(四): 色階調整 三、曲線調整( Curves Adjustment ) 曲線調整是Photoshop的最常用的重要功能之一。 網上關於曲線技術原理的材料都不完整。經過一個多月的探索、不斷實驗
用OpenCV實現Photoshop演算法(十): 美白磨皮(未完)
系列文章: 用OpenCV實現Photoshop演算法(四): 色階調整 十、人像美白磨皮 人像美白磨皮是一個複雜的綜合的高技術活。 基本過程是這樣的: 選取面板區域-〉磨皮-〉美白-〉銳化 相關工作涉及多種演算法: 目前我尚在研究中,有的演算法寫
用OpenCV實現Photoshop演算法(九): 高反差保留
系列文章: 用OpenCV實現Photoshop演算法(四): 色階調整 九、高反差保留(High Pass) 高反差保留是一個Photoshop的濾鏡功能。常見的用法是用於銳化,對影象進行1個畫素的高反差保留,再將得到的新影象以強光混合方式疊加在原圖上
用OpenCV實現Photoshop演算法(二): 影象剪下
系列文章: 用OpenCV實現Photoshop演算法(四): 色階調整 二、影象剪下 用OpenCV 寫一個影象剪下函式 imageCrop() 如下: //影象剪下 //引數:src為源影象, dst為結果影象, rect為剪下區域 //返回
用OpenCV實現Photoshop算法(三): 曲線調整
快的 nes copy eve pla 很快 view 特點 色值 http://blog.csdn.net/c80486/article/details/52499919 系列文章: 用OpenCV實現Photoshop算法(一): 圖像旋轉 用OpenCV實現Photo
Python調用OpenCV實現人臉識別
source display document down char name 實現 cvt config [硬件環境] Win10 64位 [軟件環境] Python版本:2.7.3 IDE:JetBrains PyCharm 2016.3.2 Python庫: 1.1)
Python調用OpenCV實現攝像頭的運動檢測
搭建過程 .get mes bsdiff 資源 read del con 函數 [硬件環境] Win10 64位 [軟件環境] Python版本:2.7.3 IDE:JetBrains PyCharm 2016.3.2 Python庫: 1.1) opencv-python
Python調用OpenCV實現攝像頭的運動檢測[樹莓派版]
then see pip port wid warning number 12px ram [硬件環境] RaspberryPi 3代B型(英國版) [軟件環境] 操作系統:Raspbian Python版本:2.7.3 Python庫: 1.1) opencv-pytho
0004-用OpenCV實現影象平移的程式碼(分影象尺寸不變和變兩種情況)
影象平移是啥東西就不用講了吧!需要注意的是影象平移有兩種,第一種是平移後圖像大小不變,這樣會損失影象的部分;第二種是平移後圖像大小變化,這樣原影象不會有損失。 直接上程式碼,大家看效果吧! 程式碼流程如下: 讀取影象→顯示原影象→呼叫自定義的函式translateTransform,作平移後
用opencv實現圖片顏色反轉
# 灰度圖片顏色翻轉效果 import cv2 import numpy as np img = cv2.imread("1.jpg",1) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] gray = cv2.cvtColor
用opencv實現圖片的仿射變換和旋轉
import cv2 import numpy as np img = cv2.imread('1.jpg',1) cv2.imshow('old',img) imgInfo = img.shape height = imgInfo[0] width = imgInfo[1] matSrc = n
QT 下用opencv實現影象分類(1)
一.概述 1.按影象中的內容給影象分類是計算機視覺中比較適合初學者的專案,我見過好多手機相簿都有這一個功能,比如把美食歸為一個標籤,藍天白雲歸為一個標籤等等。還有我之前做過的車牌識別的專案都用到影象分類。 2.我做這個專案的環境是QT加opencv3.2,專案在MAC上跑
一個用Java實現密碼演算法,使用socket引發的血案
public static void main(String[] args) throws IOException, ParseException { ServerSocket serverSocket = new ServerSocket(1
用OpenCV實現目標追蹤的八種方法(轉)
原文地址:http://m.elecfans.com/article/722414.html 編者按:目標跟蹤作為機器學習的一個重要分支,加之其在日常生活、軍事行動中的廣泛應用,很多國內外學者都對此頗有研究。本文將討論OpenCV上八種不同的目標追蹤演算法。
用opencv實現立體匹配
轉自:http://blog.csdn.net/scyscyao/article/details/5443341 嘗試用OpenCV來實現立體視覺也有一段時間了,主要的參考資料就是Learning OpenCV十一、十二章和OpenCV論壇上一些前輩的討論。過程中磕磕碰碰,
機器學習 使用python+OpenCV實現knn演算法手寫數字識別
基本上照搬了http://lib.csdn.net/article/opencv/30167的程式碼,只是改了一點bug和增加了一點功能輸入就是直接在一個512*512大小的白色畫布上畫黑線,然後轉化為01矩陣,用knn演算法找訓練資料中最相近的k個,現在應該是可以對所有字元
作業系統--用JavaScript實現銀行家演算法
var num_process; //記錄程序數 var num_resource;//記錄資源數 var max = new Array();//最大資源數 var need = new Array();//資源需求數 var work = new Array();//資源可用數 var work2 = n
OpenCV實現邊緣演算法
1.功能: 粗略的描繪影象的邊緣 2.演算法: 將當前畫素與鄰接的下部和右部的畫素進行比較,如果相似,則將當前畫素設定為黑色,否則設定為白色。用到的演算法為歐氏距離演算法。 3.程式碼:
深度學習基礎系列 (二) 用 sklearn 實現 ID3 演算法
什麼是決策樹/判定樹(decision tree) 判定樹是一個類似於流程圖的樹結構:其中,每個內部結點表示在一屬性上的測試, 每個分支代表一個屬性輸出,而每個樹葉結點代表類或類分佈。樹的頂層是根結點。 熵(entropy)概念 1948年,夏農