写了个小工具,实现和labelimg一样的效果,输出一个txt文件
参数为:类别代号,包围框中心点x坐标,包围框中心点y坐标,包围框宽度,包围框高度。参数均已归一化
Label_Img.cpp
#include<opencv2/core/core.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/opencv.hpp>
#include<iostream>
#include<fstream>
#include <iomanip>
using namespace cv;
using namespace std;
Mat org, dst, img, tmp;
string param_str;
void on_mouse(int event, int x, int y, int flags, void *ustc) {
static Point pre_pt = Point(-1, -1);//初始坐标
static Point cur_pt = Point(-1, -1);//实时坐标
char temp[16]; //显示的(x,y)字符串
if (event == CV_EVENT_LBUTTONDOWN) {//左键按下,读取初始坐标,并在图像上该点处划圆
org.copyTo(img);
sprintf(temp, "(%d,%d)", x, y); //格式化输出
pre_pt = Point(x, y);
putText(img, temp, pre_pt, FONT_HERSHEY_SIMPLEX, 0.5, Scalar(0, 0, 0, 255), 1, 8