算術演算子
アウトライン
我々は2枚の画像上のOpenCVの機能(cv.add())または単純な操作numpyの(RES = IMG1 + IMG2)の操作をすることができます。2枚の深度画像(各画像を記憶するために使用されるビットの数、イメージ深度の各ピクセルは、カラー画像を色の任意の数であってもよいと判断)とタイプが同じでなければならない、または画像のみを第二のスカラー値であってもよいです。
しかし、OpenCVの追加とnumpyの添加は違いがあります。OpenCVの加算演算が飽和し、numpyの添加はモジュロ演算です。
例えば:
インポートCV AS CV2 インポートNP AS numpyの X = np.uint8([250 ])#符号なし8ビット整数は、[0、255]までの範囲の整数で表す Y = np.uint8([10 ]) 印刷(CVを。追加(X、Y)) #250 = + 10 = 260> [[255]] プリント(X + Y) #250 = 10 + 256 = 260 .. 4%=> [4]
画像演算
定義:
SRC1:最初の画像
SRC2:第二の画像
DST:先、先の画像、事前にスペースを割り当てる必要が、省略することができます
マスク:8ビットシングルチャンネル配列要素は出力配列の変化を特定します。
規模:スケーリング比
DTYPE:出力アレイの深さは、デフォルトではに等しく、-1
DST = cv.add(SRC1、SRC2 [、DST [マスク〔、DTYPE]]])
DST = cv2.subtract(SRC1、SRC2、DST、マスク、DTYPE)
DST = cv2.multiply(SRC1、SRC2、DST、スケール、DTYPE)DST =規模* * SRC1 SRC2
DST = cv2.divide(SRC1、SRC2、DST、スケール、DTYPE)DST =規模* SRC1 / SRC2
例えば:
インポートCV AS CV2 インポートNP AS numpyの IMG1 = cv.imread(' 1.JPG ') #の画像。1 IMG2 = cv.imread(' 2.JPG ') #の画像2 を追加 = cv.add(IMG1、IMG2) #2加算画像 減算= cv.subtract(IMG1、IMG2) #2画像減算 乗算= cv.multiply(IMG1、IMG2) #2つの画像は乗算 = cv.divide(IMG1、IMG2)分割 #2つの画像を分割 cv.imshow(「テスト」、追加)
画像ブレンディング
これはまた、追加画像ですが、異なる重みの画像に、それは人々に混合または透明感を与えます。式次の画像を追加します。
D S T = A ⋅ iは、mはG 1 + B ⋅ I のM G 2 + C
DST = cv.addWeighted(SRC1、アルファ、SRC2、ベータ、ガンマ〔、DST [、DTYPE]])
パラメータ:
SRC1:最初の画像
appha:最初の配列要素は、重量を占め
SRC2:第二の画像
ベータ:二番目の配列要素は、重量を占めます
ガンマ:スカラーとのそれぞれに添加
DST:入力アレイと出力アレイは、チャネルの同じサイズおよび数を有します
DTYPE:
インポートのNPとしてnumpyの インポートのCVとしてCV2 デフ何も(X): 合格 #ブラック画像、ウィンドウ作成 IMG1を= np.zeros((300、528、3 )、np.uint8) IMG2 = cv.imreadを(" 2。 JPG 」) cv.namedWindow(' 画像' ) #は、色変化のためにトラックバーを作成 cv.createTrackbar(' 変更'、' 画像'、0、1 、何を) しながら(1 ): K = cv.waitKey(1)&0xFFで もし k個の== 27: ブレーク #は4つのトラックバーの現在位置を取得 =のcv.getTrackbarPos(変更" 変更"、' 画像' ) DST = cv.addWeighted(IMG1、変更、IMG2、1- 変更、0) cv.imshow(" 画像" 、DSTを) cv.destroyAllWindows()
論理演算子(その後の更新)