界面渲染屏幕绿色条纹问题
原因:去畸变算法参数中目标图片尺寸大于原始尺寸导致,具体原因:输出图像大的话需要进行剪裁,否则会出现此问题。
cv::Rect rect((cropImg.size().width - impl->mVideoW) / 2, (cropImg.size().height - impl->mVideoH) / 2, impl->mVideoW, impl->mVideoH);
cropImg = cropImg(rect);
void OpenGLDisplay::dealDedistort() {
cv::Mat k = cv::Mat::eye(3, 3, CV_32FC1); // 内参矩阵
k.at<float>(0, 0) = g_fx;
k.at<float>(0, 2) = g_cx;
k.at<float>(1, 1) = g_fy;
k.at<float>(1, 2) = g_cy;
cv::Mat d = cv::Mat::zeros(1, 4, CV_32FC1); // 畸变系数矩阵 顺序是[k1, k2, p1, p2]
d.at<float>(0, 0) = g_k1;
d.at<float>(0, 1) = g_k2;
d.at<float>(0, 2) = g_p1;
d.at<float>(0, 3) = g_p2;
cv::Mat xi = cv::Mat::zeros(1, 1, CV_32FC1);
xi.at<float>(0, 0) = 2.0363457667452303;
cv::Size imageSize(impl->mVideoW, impl->mVideoH);

文章讨论了OpenCV在处理图像去畸变时出现的绿色条纹问题,原因是目标图片尺寸过大未正确剪裁。同时,指出在多线程环境下,由于并发memcpy操作共享资源导致的屏幕闪烁问题。解决方案是使用互斥锁确保资源访问的原子性,以避免数据覆盖。文章强调,即使在当前低速场景下问题不明显,但在高速场景下问题可能会加剧,需要重构代码以优化并发访问并注意锁的性能影响。
最低0.47元/天 解锁文章
892

被折叠的 条评论
为什么被折叠?



