gpt4 book ai didi

c++ - 为什么 cv::format 没有给我预期的结果?

转载 作者:行者123 更新时间:2023-11-28 04:31:36 26 4
gpt4 key购买 nike

我在 Release模式下使用 C++ 和 VS 2015 使用 openCV 3.4.0

我试图将文本放在 cv::Mat 中的特定位置。

当我尝试这个时,它起作用了:

    //int FPS = calculate_FPS(measure_time(false));
int FPS = 6;
std::cout << "FPS = " << FPS << std::endl;
measure_time(true);
cv::putText(canvas(frame_per_second_area), cv::format("FPS: %d", FPS) , cv::Point(frame_per_second_area.width*0.20, frame_per_second_area.height*0.7), cv::FONT_HERSHEY_PLAIN, 1, cv::Scalar(0, 0, 0));

它看起来像:

enter image description here

到这里一切都很好。然而,当我尝试这种方式时,我得到了不好的结果:

    int FPS = calculate_FPS(measure_time(false));
//int FPS = 6;
std::cout << "FPS = " << FPS << std::endl;
measure_time(true);
cv::putText(canvas(frame_per_second_area), cv::format("FPS: %d", FPS) , cv::Point(frame_per_second_area.width*0.20, frame_per_second_area.height*0.7), cv::FONT_HERSHEY_PLAIN, 1, cv::Scalar(0, 0, 0));

看起来像:

enter image description here

需要提到屏幕输出看起来不错:

enter image description here

需要提及#2 - 这是函数声明:

int calculate_FPS(double elapsed_time_in_ms);

最佳答案

问题不在于是否调用:calculate_FPS(measure_time(false));。实际问题是您在同一 Canvas 上重复渲染文本。我可以向您证明这一点:

情况 1:在调用 putText 之前未刷新 Canvas 的地方:

canvas = np.ones((100, 200, 3), dtype=np.uint8)

# Set the canvas background color as Red.
canvas[:, :] = np.array([0, 0, 255])

for i in xrange(15):
cv2.putText(canvas, "FPS: " + str(i), (50, 70), cv2.FONT_HERSHEY_PLAIN, 1, np.array([0, 0, 0]))

enter image description here

情况2:在调用putText之前刷新canvas

canvas = np.ones((100, 200, 3), dtype=np.uint8)

# Set the canvas background color as Red.
canvas[:, :] = np.array([0, 0, 255])

for i in xrange(15):
canvas[:, :] = np.array([0, 0, 255])
cv2.putText(canvas, "FPS: " + str(i), (50, 70), cv2.FONT_HERSHEY_PLAIN, 1, np.array([0, 0, 0]))

enter image description here

关于c++ - 为什么 cv::format 没有给我预期的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755712/

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