画像のビットごとの操作 bitwise()、色空間変換 cvtColor、カラー マップ applyColorMap()

1. ビット否定 bitwise_not()
ビット否定とは、ビットごとに値を 0 に、0 を 1 に変えることです 例えば 0xf0 をビット否定すると 0x0f になります uint8 型データの場合は否定します 結果前後のデータを加算すると0xff(255)となります。

img_ret1 = cv2.bitwise_not(img1)

2. ビット単位の AND bitwise_and()、または bitwise_or()、XOR bitwise_xor() ビット単位の
AND、OR、XOR 演算には、2 つのイメージ オブジェクト、または 1 つのイメージ オブジェクトと 1 つのスカラー データの相互作用が必要です。

dst = cv2.bitwise_and(src1, src2[, dst[, mask]] )
dst = cv2.bitwise_or(src1, src2[, dst[, mask]] )
dst = cv2.bitwise_xor(src1, src2[, dst[, mask]] )

2 つのイメージに対するビット単位の演算は算術演算と同じであり、2 つのイメージが同じサイズであり、同じ数のチャネルを持つことも必要です。ビット演算における 2 つのイメージのデータ型も一貫している必要があります。
プログラミングの良い習慣は、イメージに含まれるチャネルの数に関係なく、このスカラーを表すために 4 倍を使用することです。特定のチャネルでビット演算を実行したくない場合は、代わりに、対応する all-0 または all-f を使用します。 3 チャネル uint8 タイプ。画像の場合は、2 チャネルと 0x33 の AND をとるだけでよく、構築される 4 倍数は (0xff, 0x33, 0xff, 0xff) です。

img_ret1 = cv2.bitwise_and(img1,(0x3f,0x3f,0x3f,0))

浮動小数点型のビット演算はほとんど使用されません。

色変換cvtColor()

デジタル画像では、最も一般的なカラー モデルは RGB モデル (赤、緑、青、OpenCV でのカラー画像構成の順序は BGR、依然として RGB モデル) です。このモデルは、画像取得などのハードウェア処理の一般的なモデルです。 CCD センサーや画像を表示するモニターなどは、人間の目での観察を記述する HSV (彩度、彩度、明るさ) モデルと一致しています。

OpenCV は、さまざまなカラー モデル (色空間) を相互に変換するためのインターフェイスを提供しており、たとえば、BGR から HSV、HSV から BGR、または BGR からグレースケールに変換できます。
dst=cv2.cvtColor(src, code[, dst[, dstCn]])
src はソース イメージ オブジェクトです;
code は OpenCV の色空間によって定義されたマクロ定数です。メソッド color = [i for i in dir(cv) if i.startswith('COLOR_') を通じてすべての色空間変換を横断できます。 ] 名前、バージョン 4.5.2 では 274 の変換方法があります。
より一般的に使用されるものは、COLOR_BGR2GRAY、COLOR_GRAY2BGR、COLOR_BGR2HSV、COLOR_BGR2RGB です。dstCn は
ターゲット イメージのチャネル数です。0 に設定すると、ターゲット イメージのチャネル数はソース イメージから自動的に計算されます。

img_ret2 = cv2.cvtColor(img2,cv2.COLOR_BGR2HSV)

HSV色空間

カラーマップ

applyColorMap() は、最大 22 の変換モードでグレースケール イメージをカラー イメージに変換できます。

cv2.applyColorMap(src, colormap[, dst]) ->dst

ここで、 src は入力イメージで、シングル チャネルまたは 3 チャネルの 8 ビット イメージを指定できます。
Colormap はカラー マップ モードであり、さまざまなカラー マップに対応する 0 ~ 21 の整数を渡すことができます。

import cv2 
img_gray = cv2.imread("ha.jpg",cv2.IMREAD_GRAYSCALE)
for i in range(0,21):
    dst = cv2.applyColorMap(img_gray,i) 
    cv2.imshow('map',dst) 
    cv2.waitKey(500)
    cv2.imwrite("map-"+str(i)+".jpg",dst)

おすすめ

転載: blog.csdn.net/aqiangdeba/article/details/129764360