【发布时间】:2019-06-20 14:25:19
【问题描述】:
我正在编写一个 python 视频稳定器,在代码的某些部分我需要将 2 个图像复制到画布中。
我试图将此 c++ 代码转换为 python,但我无法。
Mat cur2;
warpAffine(cur, cur2, T, cur.size());
cur2 = cur2(Range(vert_border, cur2.rows-vert_border),
Range(HORIZONTAL_BORDER_CROP, cur2.cols-HORIZONTAL_BORDER_CROP));
// Resize cur2 back to cur size, for better side by side comparison
resize(cur2, cur2, cur.size());
// Now draw the original and stablised side by side for coolness
Mat canvas = Mat::zeros(cur.rows, cur.cols*2+10, cur.type());
cur.copyTo(canvas(Range::all(), Range(0, cur2.cols)));
cur2.copyTo(canvas(Range::all(), Range(cur2.cols+10, cur2.cols*2+10)));
我写了这段代码,但出现错误:
ret, frame = cap.read()
new_frame = transform(frame,data[counter]) #some kind of low pass filter
canvas = np.zeros ((frame_height, frame_width*2+10,3))
np.copyto (canvas[:frame_width], frame)
np.copyto (canvas[frame_width+10:frame_width*2+10], new_frame)
我明白了
“无法从形状广播到形状”
错了。但我认为我以错误的方式使用了画布。在 cpp 代码中有 canvas(Range::all(), Range(0, cur2.cols)) 我不知道如何在 python 中使用它
如何在 python 中使用 Range 函数和 copyTo 函数? 我应该如何将图像复制到画布的特定部分?
有什么帮助吗?
【问题讨论】:
-
我写了这段代码,但我得到了错误:你能详细说明你的代码是如何“不起作用”的吗?你期待什么,实际发生了什么?如果您遇到异常/错误,请发布它发生的行和异常/错误详细信息。请edit这些详细信息,否则我们可能无法提供帮助。
-
我得到“无法从形状转换成形状”错误。但我认为我以错误的方式使用了画布。在 cpp 代码中有 canvas(Range::all(), Range(0, cur2.cols)) 我不知道如何在 python 中使用它!
标签: python c++ numpy opencv cv2