2017-12-19 19 views
1

これは私がブレンドMAGEしかしcv2.addweightedに何か()があるために私のコードです:cv2.addweightedでエラー()

import cv2 
import numpy as np 

img1 = cv2.imread('1.png') 
img2 = cv2.imread('messi.jpg') 
dst= cv2.addWeighted(img1,0.5,img2,0.5,0) 

cv2.imshow('dst',dst) 
cv2.waitKey(0) 
cv2.destroyAllWindows() 

エラーは次のとおりです。

Traceback (most recent call last): 
    dst= cv2.addWeighted(img1,0.5,img2,0.5,0) 
cv2.error: C:\projects\opencv-python\opencv\modules\core\src\arithm.cpp:659: error: (-209) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function cv::arithm_op 

何が問題ですか?私はコマンドを検索し、私はコマンドが大丈夫だと確信しています。エラーを理解していない!助けて!

+0

両方の画像をチェックしましたか?両者の印刷形状は、同じサイズでなければならない。そして、それらは正しくロードされなければなりません(パスが間違っているかもしれません) – api55

+0

どうしたら同じサイズではないのですか? – alilolo

+0

このメソッドは、どのピクセルがどのピクセルを別のピクセルでどのように追加するかを知っているわけではないにしても、同じサイズしか受け付けません。サイズを同じにするためにサイズを変更する、サイズを小さくして境界を小さくする、またはより大きなものを切り抜くなど、他の可能性があります。問題はどのように関数がどの1つをあなたがしたい...それはあなたが何をしたいかの外でそれを行う必要がある理由です – api55

答えて

1

あなたはこの実行します。

dst= cv2.addWeighted(img1,0.5,img2,0.5,0) 

エラー情報:

error: (-209) The operation is neither 'array op array' 
(where arrays have the same size and the same number of channels), 
nor 'array op scalar', nor 'scalar op array' in function cv::arithm_op 

考えられる理由:IMG1/IMG2の

  1. 1つ以上は、そのようなNoneとして、not np.ndarrayです。たぶんあなたはそれを読んでいないでしょう。
  2. img1.shapeは、img2.shapeと等しくありません。彼らは異なるサイズを持っています。

あなたが直接cv2.addWeightedを行う前に、あなたは、彼らが同じサイズであるかどうかわからない場合はimg1.shapeimg2.shapeをチェックする必要があります。

大きな画像に小さな画像を追加する場合は、ROI/mask/slice opを使用してください。

関連する問題