去畸变工程问题排查总结——界面渲染屏幕绿色条纹问题&&屏幕闪烁问题(去畸变前图跟去畸变后的图)

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

界面渲染屏幕绿色条纹问题

        原因:去畸变算法参数中目标图片尺寸大于原始尺寸导致,具体原因:输出图像大的话需要进行剪裁,否则会出现此问题。

 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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ปรัชญา แค้วคำมูล

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值