C++ Opencv无法在图像上绘制线条

C++ Opencv无法在图像上绘制线条,c++,opencv,C++,Opencv,我试图在opencv c中绘制一些形状++ 我首先提取一个边界框,然后在该框中画一条线。我的经验是,这条线将反映在原始图像中 我的代码是这样的: #include <stdio.h> #include <opencv/cv.h> #include <opencv/highgui.h> #include <opencv/cxcore.h> #include <math.h> #include <array> #include

我试图在opencv c中绘制一些形状++

我首先提取一个边界框,然后在该框中画一条线。我的经验是,这条线将反映在原始图像中

我的代码是这样的:

#include <stdio.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <opencv/cxcore.h>
#include <math.h>
#include <array>
#include <unordered_set>

using namespace cv;
using namespace std;

void draw(Mat& frame){
 auto best_viola_jones = frame.clone();


    auto violaJonesDetections = get_detections();

           for (auto &rect: violaJonesDetections) {
        auto clone = best_viola_jones(rect);

        auto circles = get_circles();
        auto lines = get_lines();

        if (dartboardDetected(circles, lines, rect)) {
            counter += 1;
            cout << "detected" << endl;

            rectangle(clone, Point(rect.x, rect.y),
                      Point(rect.x + rect.width, rect.y + rect.height),
                      Scalar(255, 0, 0), 2);


        }

    }

    cout << "Total dartboards detected: " << counter;


    imwrite("result/best_viola_jones.jpg", best_viola_jones);
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间cv;
使用名称空间std;
空心图纸(垫和框架){
auto best_viola_jones=frame.clone();
自动检测=获取检测();
用于(自动和直接:紫外线检测){
自动克隆=最佳中提琴手琼斯(rect);
自动循环=获取循环();
自动线=获取线();
如果(已检测到(圆、线、矩形)){
计数器+=1;

cout`我没有评论的名声,但我有澄清的问题/评论:

你提到画一条线,但你似乎在画一个矩形:

rectangle(clone, Point(rect.x, rect.y),
                      Point(rect.x + rect.width, rect.y + rect.height),
                      Scalar(255, 0, 0), 2);
然后,您将提取一个边界框

 auto clone = best_viola_jones(rect);
在这里,我认为Rect是一个Rect2d,它没有声明

然后,您使用
rect
坐标绘图。可能是
点(rect.x,rect.y)
大于克隆的高度和宽度


如果你输出克隆的大小和你试图在上面写的坐标,我认为这将有助于调试。也许你需要写
变量,而不是
rect

看起来你在子图像上画图,但矩形的坐标指的是e整个图像。如果是这样,您正在绘制,但在子图像之外