c++ - OpenCV imshow 错误? - 像素颜色

标签 c++ image-processing opencv

我花了半天时间才找到错误。最后我发现了这个奇怪的东西:

在我的代码 method1 的一部分中,我执行以下操作:

Mat prevgray, gray, flow, cflow, frame;
cvtColor(frame1, prevgray, CV_BGR2GRAY);
cvtColor(frame2, gray, CV_BGR2GRAY);
calcOpticalFlowFarneback(prevgray, gray, flow, 0.5, 3, 15, 3, 5, 1.2, 0);
...

在其他部分,方法 2,我创建了新的 Mat 并尝试显示它:

Mat result(480,640, CV_8UC3);
result.at<cv::Vec3b>(y,x)[0] = b;
result.at<cv::Vec3b>(y,x)[1] = g;
result.at<cv::Vec3b>(y,x)[2] = r;
namedWindow( "jojw", CV_WINDOW_AUTOSIZE );
imshow("jojw",result);
waitKey(0);

结果是这张图片:

enter image description here

但是,如果我不使用 calcOpticalFlowFarneback 方法。我将其注释掉或在代码到达之前返回。结果图OK。

这是怎么回事?

请帮帮我

最佳答案

自己解决了。花了 12 个小时来解决这个愚蠢的错误。那是错误吗?我仍然不明白,但解决方案是创建零垫:

Mat result = Mat::zeros(480,640, CV_8UC3);

关于c++ - OpenCV imshow 错误? - 像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007232/

相关文章:

opencv - 如何使用 SURF 和 C 检测视频中的对象?

arrays - cv.fillPoly生成零数组,不读取输入

c++ - std::shared_ptr 初始化:make_shared<Foo>() vs shared_ptr<T>(new Foo)

c++ - 使用 boost::serialization 序列化一个包含作为成员的 boost adjacency_list 的类

python - 使用 OpenCV 进行网络摄像头颜色校准

python - 如何使用 openCV python 将图像的蒙版部分替换为另一个图像?

c++ - 为什么在下面的例子中 int(a) 是一个表达式而 int(unsigned(a)) 是一个 type-id?

c++ - 编译器内联什么调用?

python - 如何使用带有 OpenCV 的 Harris 检测器正确检测角点?

opencv - 将 SVM 与 opencv 结合使用?