2017-08-23 8 views
1

画像の矩形部分(Mat)を0の値に置きたいと思います。私のイメージは、行数が1000、列数が1500です。私は幅150と高さ100(890,1340)のパッチをマスクしたい。このために、私は次のコードスニペット使用しています:OpenCV Rect xとyは(列、行)または(行、列)を表します

cv::Rect patch; 
patch.y = 890; 
patch.x = 1340; 
patch.height = 100; 
patch.width = 150; 
image(patch) = 0; 

をしかし、私は次のエラーを取得しています:

OpenCVのエラー:入力引数のサイズが一致しない(操作は「配列OP配列」(でもありませんcv :: arithm_op、ファイルC:¥build¥master_winpack-build-win64-vc14¥opencv¥modulesには、配列は同じサイズと同じ数のチャンネルを持っています)、 'array op scalar'や 'scalar op array' \ core \ src \ arithm.cpp、行659

Rectパッチのx座標とy座標を変更しましたが、同じエラーが表示されています。私はインターネットで検索しましたが、私はまだRectパラメータについて混乱しています。

Rect x、yが(列、行)または(行、列)を表すかどうか。

+0

xが列、yが行....エラーが何であるかを知るために画像がどのように作成されたかを示す必要があります。 – api55

+3

image(patch).setTo(cv :: Scalar(0)); – Miki

+0

ありがとう@Miki、それは前述のコマンドを使用して働いた。 – Jazz

答えて

1

Rect xは列を表し、yは行を表す。これは、image.at(i、j)が(行、列)として(i、j)を使用していますが、Rect(x、y)が(列、行)として(x、y)を使用していることを意味します。

関連する問題