基础算法积累,不是什么难题,只是为了以后快速粘贴复制,也共大家提高效率。
这个是读取txt 文本数据用的,稍加改造即可使用。天下文章一大抄,就看你能超出什么效果,这里不再感谢代码的原始出处,如果原始作者看到。请你放开胸怀,就算帮助大家,提供方便了!
void readInToMatrix(fstream &in, string FilePath, double data[ROW][COLUMN]) {
in.open(FilePath, ios::in);//打开一个file
if (!in.is_open()) {
cout << "Can not find " << FilePath << endl;
system("pause");
}
string buff;
int i = 0;//行数i
while (getline(in, buff)) {
vector<double> nums;
// string->char *
char *s_input = (char *)buff.c_str();
const char * split = ",";
// 以‘,’为分隔符拆分字符串
char *p = strtok(s_input, split);
double a;
while (p != NULL) {
// char * -> int
a = atof(p);
//cout << a << endl;
nums.push_back(a);
p = strtok(NULL, split);
}//end while
for (int b = 0; b < nums.size(); b++) {
data[i][b] = nums[b];
//std::cout<<nums[b]<<" , ";
}//end for
//std::cout<<endl;
i++;
}//end while
in.close();
cout << "get data over" << endl;
}
没有main()怎么形?
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>
#include <cstdlib>
#include <ctime>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include <fstream>
#include <vector>
#include <cassert>
#include <string>
#include <sstream>
using namespace cv;
using namespace std;
#ifdef _DEBUG
#pragma comment(lib,"opencv_core2413d.lib")
#pragma comment(lib,"opencv_highgui2413d.lib")
#pragma comment(lib,"opencv_imgproc2413d.lib")
#pragma comment(lib,"opencv_features2d2413d.lib")
#pragma comment(lib,"opencv_calib3d2413d.lib")
#pragma comment(lib,"opencv_legacy2413d.lib")
#pragma comment(lib,"opencv_stitching2413d.lib")
#pragma comment(lib,"opencv_photo2413d.lib")
#pragma comment(lib,"opencv_contrib2413d.lib")
#pragma comment(lib,"opencv_flann2413d.lib")
#pragma comment(lib,"opencv_gpu2413d.lib")
#pragma comment(lib,"opencv_ml2413d.lib")
#pragma comment(lib,"opencv_nonfree2413d.lib")
#pragma comment(lib,"opencv_objdetect2413d.lib")
#pragma comment(lib,"opencv_ocl2413d.lib")
#pragma comment(lib,"opencv_superres2413d.lib")
#pragma comment(lib,"opencv_ts2413d.lib")
#pragma comment(lib,"opencv_video2413d.lib")
#pragma comment(lib,"opencv_videostab2413d.lib")
#else
#pragma comment(lib,"opencv_core2413.lib")
#pragma comment(lib,"opencv_highgui2413.lib")
#pragma comment(lib,"opencv_imgproc2413.lib")
#pragma comment(lib,"opencv_features2d2413.lib")
#pragma comment(lib,"opencv_calib3d2413.lib")
#pragma comment(lib,"opencv_legacy2413.lib")
#pragma comment(lib,"opencv_stitching2413.lib")
#pragma comment(lib,"opencv_photo2413.lib")
#pragma comment(lib,"opencv_contrib2413.lib")
#pragma comment(lib,"opencv_flann2413.lib")
#pragma comment(lib,"opencv_gpu2413.lib")
#pragma comment(lib,"opencv_ml2413.lib")
#pragma comment(lib,"opencv_nonfree2413.lib")
#pragma comment(lib,"opencv_objdetect2413.lib")
#pragma comment(lib,"opencv_ocl2413.lib")
#pragma comment(lib,"opencv_superres2413.lib")
#pragma comment(lib,"opencv_ts2413.lib")
#pragma comment(lib,"opencv_video2413.lib")
#pragma comment(lib,"opencv_videostab2413.lib")
#endif //_debug
#define ROW 1152
#define COLUMN 8
string mtrain_txt="alldl-save.txt";
ofstream myfileall(mtrain_txt, ios::app);
int main()
{
double data[ROW][COLUMN];
fstream mfin;
string txtfilepath="dataXYZ-0829.txt";
readInToMatrix(mfin,txtfilepath,data);
//显示定位效果
Mat picture(500,500,CV_8UC3,Scalar(255,255,255));
Point drawcenter = Point(250,250);
Point drawcenterSec = Point(250,250);
bool iscaulate=false;
while(true)
{
//wait for 40 milliseconds
int c = cvWaitKey(40);
//exit the loop if user press "Esc" key (ASCII value of "Esc" is 27)
if (27 == char(c)) break;
int drawr = 2;
//承载图像
int color=255;
line(picture, Point(0,150), Point(500, 150), Scalar(0, 255, 0), 1, 8);
line(picture, Point(0,200), Point(500, 200), Scalar(0, 255, 0), 1, 8);
line(picture, Point(0,250), Point(500, 250), Scalar(0, 255, 0), 1, 8);
line(picture, Point(0,300), Point(500, 300), Scalar(0, 255, 0), 1, 8);
line(picture, Point(0,350), Point(500, 350), Scalar(0, 255, 0), 1, 8);
line(picture, Point(150, 0), Point(150, 500), Scalar(255,0 , 0), 1, 8);
line(picture, Point(200, 0), Point(200, 500), Scalar(255,0 , 0), 1, 8);
line(picture, Point(250, 0), Point(250, 500), Scalar(255,0 , 0), 1, 8);
line(picture, Point(300, 0), Point(300, 500), Scalar(255,0 , 0), 1, 8);
line(picture, Point(350, 0), Point(350, 500), Scalar(255,0 , 0), 1, 8);
if(!iscaulate)
{
for(int i=0;i<ROW;i++)
{
myfileall << data[i][0]<<","<<data[i][1]<<","<<data[i][2]<<","<<data[i][3]<<data[i][4]<<","<<data[i][5]<<","<<data[i][6]<<","<<data[i][7]<<"\t\n" ;
drawcenter.x=250-(data[i][0])/5;
drawcenter.y=250+data[i][1]/5;
drawcenterSec.x=250-data[i][4]/5;
drawcenterSec.y=250+data[i][5]/5;
//参数为:承载的图像、圆心、半径、颜色、粗细、线型
circle(picture,drawcenterSec,drawr,Scalar(0,0,color));
//参数为:承载的图像、圆心、半径、颜色、粗细、线型
circle(picture,drawcenter,drawr,Scalar(0,color,0));
}
iscaulate=true;
}
imshow("Location_Show",picture);
}
myfileall.close();
return 0;
}
写的不好,大家凑合着参考!