gpt4 book ai didi

c++ - 使用opencv warpaffine时如何保持白色背景

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:32 28 4
gpt4 key购买 nike

我正在尝试使用旋转图像

void rotate(cv::Mat& src, double angle, cv::Mat& dst)
{
int len = std::max(src.cols, src.rows);
cv::Point2f pt(len / 2., len / 2.);
cv::Mat r = cv::getRotationMatrix2D(pt, angle, 1.0);
cv::warpAffine(src, dst, r, cv::Size(src.cols, src.rows));
}

通过给出角度、源和目标图像。旋转工作正常,如下所示。

enter image description here

我想让黑色区域变白。我试过

cv::Mat dst = cv::Mat::ones(src.cols, src.rows, src.type());

在调用旋转之前,但结果没有变化。我怎样才能做到这一点?

注意:我正在寻找在旋转时实现此目的的解决方案。显然,通过在旋转后将黑色区域变成白色可以实现这一点。

最佳答案

您需要使用 warpAffine 函数的 borderModeborderValue 参数来完成此操作。通过将模式设置为 BORDER_CONSTANT,它将为边框像素(即图像外部)使用常量值,您可以将该值设置为您想要使用的常量值(即白色)。它看起来像:

cv::warpAffine(src, dst, r,
cv::Size(src.cols, src.rows),
cv::INTER_LINEAR,
cv::BORDER_CONSTANT,
cv::Scalar(255, 255, 255));

有关详细信息,请参阅 OpenCV API Documentation .

关于c++ - 使用opencv warpaffine时如何保持白色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114741/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com