themap = cv.CreateMat(8,8,cv.CV_8UC1)
cv.SetZero(themap)
cv.Line(themap,(0,0),(7,7),(10),1,cv.CV_AA) #draw a line
print np.asarray(themap[:,:])
#######output
[[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]
[ 0 2 7 2 0 0 0 0]
[ 0 0 3 10 3 0 0 0]
[ 0 0 0 3 10 3 0 0]
[ 0 0 0 0 2 7 2 0]
[ 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0]]
Однако, когда я изменяю тип изображения на cv.CV_16UC1
, результат совершенно другой:
themap = cv.CreateMat(8,8,cv.CV_16UC1)
cv.SetZero(themap)
cv.Line(themap,(0,0),(7,7),(10),1,cv.CV_AA) #draw a line
print np.asarray(themap[:,:])
#######output
[[10 0 0 0 0 0 0 0]
[ 0 10 0 0 0 0 0 0]
[ 0 0 10 0 0 0 0 0]
[ 0 0 0 10 0 0 0 0]
[ 0 0 0 0 10 0 0 0]
[ 0 0 0 0 0 10 0 0]
[ 0 0 0 0 0 0 10 0]
[ 0 0 0 0 0 0 0 10]]
Я полностью запутался в таких результатах.Поскольку значение пикселя составляет всего 10, проблем с переполнением для типа изображения cv.CV_8UC1
не должно быть.Почему результаты cv.Line
могут быть такими разными?
OpenCV установлен в /usr/local/Cellar/opencv@2/2.4.13.6_2/lib/python2.7/site-packages/cv.py
с brew install opencv@2
.