C++ Opencv无法在图像上绘制线条
我试图在opencv c中绘制一些形状++ 我首先提取一个边界框,然后在该框中画一条线。我的经验是,这条线将反映在原始图像中 我的代码是这样的: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
#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整个图像。如果是这样,您正在绘制,但在子图像之外