【发布时间】:2017-09-06 14:59:25
【问题描述】:
我正在尝试使用 cv2 和 numpy 使用 openCv 重新映射图像,但我遇到了一些问题。我收到的错误是:
OpenCV 错误:断言失败 (((map1.type() == CV_32FC2 || map1.type() == CV_16SC2) && map2.empty()) || (map1.type() == CV_32FC1 && map2 .type() == CV_32FC1)) 在重映射中,文件 /tmp/binarydeb/ros-kinetic-opencv3-3.2.0/modules/imgproc/src/imgwarp.cpp,第 5043 行
但两个地图都是 float32 类型 - 所以我不太明白这个错误。我在函数中运行以下代码:
rows, cols, channels = img.shape
map_x = np.zeros( (rows,cols,channels), np.float32 )
map_y = np.zeros( (rows,cols,channels), np.float32 )
for i in xrange( rows ):
for j in xrange( cols ):#
p = [ i, j ]
x = np.array( [ p[0], p[1], 1, p[0]*p[1]] )
#Compute pixel transform
trans = np.round( x.dot( self.w ) )
map_x[i,j] = trans[0]
map_y[i,j] = trans[1]
outimg = cv2.remap( img, map1, map2, cv2.INTER_CUBIC )
提前致谢
【问题讨论】:
-
一个很好的猜测是
channels不是 1,但数组应该是单通道(CV_32FC1-- 32 位浮点数,1 通道) -
啊,你说得对,谢谢
-
@tjp212 你还记得你纠正了什么让它工作吗?
标签: python python-2.7 opencv