gpt4 book ai didi

OpenCV:用渐变颜色画线

转载 作者:行者123 更新时间:2023-12-05 01:07:00 42 4
gpt4 key购买 nike

假设,我有两个不同颜色的点。如何使用 OpenCV(无论是 python 还是 c++)在它们之间画线,以便线条的颜色从一种颜色渐变到另一种颜色?看来,用 OpenCV 不容易,但如果有人知道一个简单的解决方案,请帮助我)

谢谢。

最佳答案

OpenCV 包含一个 LineIterator .

它处理数学并为您提供所有像素坐标。

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

int main()
{
cv::Mat canvas { 50, 50, CV_32FC3, cv::Scalar::all(0.2) };

cv::Point pt1 { 10,30 };
cv::Point pt2 { 40,20 };

cv::Vec3f color1 { 0,1,1 }; // yellow
cv::Vec3f color2 { 1,1,0 }; // cyan

// see https://docs.opencv.org/master/dc/dd2/classcv_1_1LineIterator.html
cv::LineIterator it { canvas, pt1, pt2, 8 };

for (int i = 0; i < it.count; ++i, ++it)
{
float alpha = i / (float)(it.count - 1); // 0..1 along the line

cv::Vec3f blended = color1 * (1-alpha) + color2 * (alpha);

canvas.at<cv::Vec3f>(it.pos()) = blended;
}

// show picture
cv::namedWindow("canvas", cv::WINDOW_NORMAL);
cv::resizeWindow("canvas", 500, 500);
cv::imshow("canvas", canvas);
cv::waitKey(-1);

return 0;
}

enter image description here

关于OpenCV:用渐变颜色画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68021491/

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