にマスクパラメータを使用するには、私がこれまでずっとこのことを学んだ:OpenCVの、Pythonの:どのようにStackOverflowにいくつかの答えを読むことによってORBの特徴検出器
マスクは同じを持っているnumpy
配列(なければなりませんデータ型はCV_8UC1
)、値は0
から255
までです。
これらの数字の意味は何ですか?対応するマスク値が0のピクセルは検出プロセスで無視され、マスク値が255のピクセルは使用されますか?その間の値はどうですか?
また、データ型がCV_8UC1
のnumpy
の配列をPythonで初期化するにはどうすればよいですか?ちょうど使用することができますdtype=cv2.CV_8UC1
私が上記で行っている前提に基づいて、現在使用しているコードはここにあります。しかし、問題は、いずれかの画像に対してdetectAndCompute
を実行すると、キーポイントが得られないということです。マスクが正しいデータ型ではないと感じています。もし私がそれについて正しいのであれば、それをどうやって修正するのですか?使用するピクセルと255件の手段を無視する
これらの数字の意味
0は何ですか手段:だからここ
# convert images to grayscale
base_gray = cv2.cvtColor(self.base, cv2.COLOR_BGRA2GRAY)
curr_gray = cv2.cvtColor(self.curr, cv2.COLOR_BGRA2GRAY)
# initialize feature detector
detector = cv2.ORB_create()
# create a mask using the alpha channel of the original image--don't
# use transparent or partially transparent parts
base_cond = self.base[:,:,3] == 255
base_mask = np.array(np.where(base_cond, 255, 0))
curr_cond = self.base[:,:,3] == 255
curr_mask = np.array(np.where(curr_cond, 255, 0), dtype=np.uint8)
# use the mask and grayscale images to detect good features
base_keys, base_desc = detector.detectAndCompute(base_gray, mask=base_mask)
curr_keys, curr_desc = detector.detectAndCompute(curr_gray, mask=curr_mask)
print("base keys: ", base_keys)
# []
print("curr keys: ", curr_keys)
# []
「numpy配列を初期化するにはどうすればよいですか」 - [numpyのデータ型に関するドキュメント](https://docs.scipy.org/doc/numpy/user/basics.types.html)を読んでみましたか? ? –
質問は、そのリストのどのデータ型にCV_8UC1は対応していますか?私は8とUのためにuint8だと信じる傾向がありますが、それを確認する文書は見つかりませんでした。問題は、私がそのキーポイントを取得していないことです。 –
http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html - 最初の段落。あなたはそれを正しく得ました、 'uint8'。 |マスクを検査し、それらが意味をなさないことを確認します。 –