以下のコードには、8 ビット整数の numpy 配列があります。それらにしきい値を適用したいので、 を呼び出します。ドキュメントは、関数が 未満のすべてのセルでcv2.threshold(img,128,1,cv2.THRSH_TOZERO)[1]
の値を持つ配列を返し、すべてのセルで より大きいか等しい元の値を持つ配列を返す必要があることを示しています。0
128
128
cv2.threshold
さらに奇妙なのは、異なるセルの同じ値に対して異なる動作をしたように見えることです。
In [48]:img
Out[48]:
array([[128, 128, 128, ..., 133, 133, 133],
[128, 128, 128, ..., 134, 134, 134],
[128, 128, 128, ..., 136, 136, 136],
...,
[132, 132, 132, ..., 128, 128, 128],
[132, 132, 132, ..., 128, 128, 128],
[132, 132, 132, ..., 128, 128, 128]], dtype=uint8)
In [49]:imgThresh=cv2.threshold(img,128,1,cv2.THRESH_TOZERO)[1]
In[50]:imgThresh
Out[50]:
array([[ 0, 0, 0, ..., 0, 151, 133],
[ 0, 0, 0, ..., 0, 151, 133],
[ 0, 0, 0, ..., 0, 151, 133],
...,
[ 0, 0, 0, ..., 0, 151, 133],
[ 0, 0, 0, ..., 0, 151, 133],
[ 0, 0, 0, ..., 0, 151, 133]], dtype=uint8)
この種の動作を引き起こしている可能性のあるものについて何か考えはありますか?
編集:私はUbuntu 12.04で実行しており、ドキュメントのインストール指示に従いました 。また、リクエストごとに、より単純化された変更を追加しています...動作しているようです。そのことをどうすればよいかわからない In 1 :import numpy, cv2
In[2]:img=numpy.random.randint(0,255,(100,100)).astype(numpy.uint8)
In[3]:img
Out[3]:
array([[122, 192, 125, ..., 224, 138, 157],
[ 46, 90, 33, ..., 95, 251, 24],
[238, 87, 113, ..., 60, 190, 175],
...,
[ 30, 33, 100, ..., 182, 123, 79],
[ 84, 180, 34, ..., 37, 52, 194],
[ 94, 51, 96, ..., 243, 69, 241]], dtype=uint8)
In[4]:img1=cv2.threshold(img,244,1,cv2.THRESH_TOZERO)
In[5]:
Out[5]:
(244.0,
array([[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 251, 0],
[ 0, 0, 0, ..., 0, 0, 0],
...,
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 0]], dtype=uint8))