Opencv(2)深淺拷貝與基本繪圖
文章目錄
- Opencv(2)深淺拷貝與基本繪圖
- 三、深淺拷貝
- 四、HSV色域
- (1).意義
- (2).cvtColor()
- (3).inRange()
- (4).適應光線
三、深淺拷貝
淺拷貝是指當圖像之間進行賦值時,圖像數據并未發生復制,而是兩個對象都指向同一塊內存塊。
深拷貝是指新創建的圖像擁有原始圖像的嶄新拷貝
c++
python
四、HSV色域
(1).意義
-
RGB 顏色空間利用三個顏色分量的線性組合來表示顏色,任何顏色都與這三個分量有關,而且這三個分量是高度相關的,所以連續變換顏色時并不直觀,想對圖像的顏色進行調整需要更改這三個分量才行。
-
自然環境下獲取的圖像容易受自然光照、遮擋和陰影等情況的影響,即對亮度比較敏感。而 RGB 顏色空間的三個分量都與亮度密切相關,即只要亮度改變,三個分量都會隨之相應地改變,而沒有一種更直觀的方式來表達。
-
在圖像處理中使用較多的是 HSV 顏色空間,它比 RGB 更接近人們對彩色的感知經驗。非常直觀地表達顏色的色調、鮮艷程度和明暗程度,方便進行顏色的對比。
H(色調/hue) |
S(飽和度/saturation) |
V(明度/Value) |
(2).cvtColor()
void cv::cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)
- src:輸入圖像,可以是Mat類型的圖像或者其他支持的圖像數據結構。
- dst:輸出圖像,用于存儲轉換后的圖像。
- code:顏色空間轉換的代碼,例如CV_BGR2GRAY表示將BGR顏色空間轉換為灰度圖像。
- dstCn:輸出圖像的通道數,如果為0,則自動根據code參數確定通道數。
(3).inRange()
void inRange(InputArray src, InputArray lowerb,InputArray upperb, OutputArray dst);
void inRange(image, Scalar(hmin,smin,vmin), Scalar(hmax,smax,vmax), image);
//typedef Vec<double, 4> Scalar;
python:
c++:
(4).適應光線
光線較暗 -> 暗色調 ; 增加飽和度S ;減小亮度V
光線較亮 -> 亮色調 ; 減小飽和度S ;增大亮度V