Opencv 无法在图像上画线
Opencv unable to draw lines on image
我正在尝试用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);
}
它正在检测我的物体,但没有抽出任何东西。
我用头撞墙来解决这个问题。有人可以提供一些指导吗?
'我没有评论的声誉,但我有澄清的问题/评论:
你提到画一条线,但似乎你在画一个矩形:
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
坐标进行绘制。 可能是Point(rect.x, rect.y)
大于克隆的高度和宽度。
如果您输出克隆的大小和您尝试在其上写入的坐标,我认为这将有助于调试。 也许您需要编写circles
和lines
变量而不是rect
.
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 如何使用 OpenCV 解码在两个 UWP 应用之间发送的图像字节?
- 如果不在窗口 10 中声明名为 openCV 的 openCV namedWindow,QT 图像显示将无法正常工作
- 在本地网络中通过OpenCV(C++)实时流式传输图像
- 如何在 OpenCV 中将图像与另一个图像相关联
- 如何在 OpenCV c++ 中压缩 TIFF 格式的图像?
- OpenCV - 如何在灰度图像上应用 Kmeans?
- 阅读和处理图像(OpenCV/C )
- cv::findContours 正在修改源图像 OpenCV 2.3
- 将图像替换为更大尺寸的图像 (OpenCV)
- 显示像素值已更改的图像openCV
- 具有积分图像的快速模糊图像(OpenCV)
- 扫描图像OpenCV上的文档检测
- 使用cv::Mat图像(opencv)如何检测对象
- 写作和展示图像OpenCV
- 从文件夹中读取图像(OpenCV)
- 无法保存从网络摄像头捕获的图像(OpenCV 2.3 的 imwrite 编译错误)
- 旋转不变的多个模板出现在图像Opencv