2016-04-03 10 views
1

私は画像処理のためにPythonとOpenCV 3を使用しています。PythonとOpenCV - なぜOpenCVで切り取った画像で処理しても元の画像に影響を与えることができますか?

だから、私はこのような画像をトリミングしている:私は関数の引数としてcroppedを使用する場合

image = cv2.imread('image_path') 
cropped = image[0:100, 0:100] 

、それは私が、croppedでエッジを検出ハフ変換を適用してから行うことです私は、同じ行も元のimageに描かれていることに気付きました。何故ですか? croppedの画像は何とか元の画像に接続されていますか?image

答えて

2

スライスされたopencv画像データは、コピーではなくジオメトリが異なる参照です。それらは配列がありません。 http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexingでnumpyのドキュメントから:

基本的なスライスによって生成されたすべての配列は、常に元 配列の図です。

強制的にコピーするには、cropped=np.array(image, copy=True)[0:100, 0:100]を使用してください。

+0

ありがとうございます!簡単に、非常に理解しやすい説明! – Hilman

関連する問題