从txt文件中读数据画车位(2)

从txt文件中读取数据在图片上画梯形

  • 功能说明

    (1)c语言读文件的运用

    (2)将从文本文件中读取的数据进行转换

    (3)opencv库的使用:画梯形,画矩形

  • 代码展示
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
char s[40][20] = { 0 };//用于读取文件中的每一行数据   最多读取40行    每个车位4个点(8个整形数  8行),保证够用
#define N 4  //4个车位   最多四个车位
int *num = (int*)malloc(sizeof(int)*(8 * N));//用于存放每个车位的8个整形的数
Point pt[4][4];//共可以存放四个车位的四个点
int main(){
    Mat src = imread("1.jpg", 1);
    FILE * fp1 = fopen("1.txt", "r");//打开输入文件
    if (fp1 == NULL)
    {//若打开文件失败则退出
        puts("不能打开文件!");
        return 0;
    }
    //四个车位  确定每个车位所需要的四个点(其实是有八个整数值构成四个点的pt.x和pt.y)
    for (int n = 0; n < 4; n++)//四个车位
    {
        for (int i = 0; i < 8; i++)//每个车位  八个整数值
        {
            fscanf(fp1, "%s", s[8 * n + i]);
            num[8 * n + i] = atoi(s[8 * n + i]);//存入对应车位的八个整数值
        }
    }
    //四个车位  对每个车位进行四个顶点的确定   并在src图上画出每个车位
    for (int n = 0; n < 4; n++)
    {
        //for (int i = 0; i < 8; i++)
        //{
        //  loc[n * 8 + i] = num[8 * n + i];
        //  //cout << loc[n * 8 + i] << " ";
        //  //if (i == 7)
        //  //  cout << endl;
        //}
        //对每个车位的四个点进行赋值
        pt[n][0].x = num[n * 8 + 0];
        pt[n][0].y = num[n * 8 + 1];
        pt[n][1].x = num[n * 8 + 2];
        pt[n][1].y = num[n * 8 + 3];
        pt[n][2].x = num[n * 8 + 4];
        pt[n][2].y = num[n * 8 + 5];
        pt[n][3].x = num[n * 8 + 6];
        pt[n][3].y = num[n * 8 + 7];
        //画车位
        line(src, pt[n][0], pt[n][1], cvScalar(0, 255, 0, 0), 1, CV_AA, 0);
        line(src, pt[n][0], pt[n][2], cvScalar(0, 255, 0, 0), 1, CV_AA, 0);
        line(src, pt[n][3], pt[n][1], cvScalar(0, 255, 0, 0), 1, CV_AA, 0);
        line(src, pt[n][3], pt[n][2], cvScalar(0, 255, 0, 0), 1, CV_AA, 0);
        imshow("RECT", src);
        //waitKey(10);
    }
    fclose(fp1);//关闭输入文件
    waitKey();
    system("pause");
    return 0;
}

  • 实验结果展示(成功画出了我们想要的车位效果)

时间: 2024-08-30 10:42:12

从txt文件中读数据画车位(2)的相关文章

SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地址码 . FlightID Varchar(10) NULL, --航班号) 2/ 建立存储过程 USE DF17DataProIF EXISTS (SELECT * FROM SYS.PROCEDURES WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[BulkDataP

把cmd信息中的正常和异常输出分别输出到不同txt文件中

场景一: 1.大量滚动信息容纳不下,在小黑屏中被冲刷掉. 2.希望把正常输出和异常输出分别输出到不同地方. 相关命令 一共有4个输出到文件的命令,现以jar命令打war包举例说明: 命令 说明 举例      > 正常输出覆盖指定文件  jar -xvf my.war @select.txt  > output.txt     2> 正常输出尾部追加到指定文件  jar -xvf my.war @select.txt  2> output.txt     >> 异常输出

Java导出List集合到txt文件中——(四)

有时候,需要将数据以一定格式导出到txt文件中.利用Java的IO可以轻松的导出数据到txt中. 1 package Action.txt; 2 3 import java.io.BufferedWriter; 4 import java.io.File; 5 import java.io.FileOutputStream; 6 import java.io.OutputStreamWriter; 7 import java.io.Writer; 8 import java.util.Array

C++读写TXT文件中的string或者int型数据以及string流的用法

对文件的读写操作是我们在做项目时经常用到的,在网上看了很多博客,结合自身的项目经验总结了一下,因此写了这篇博客,有些地方可能直接从别的博客中复制过来,但是都会注明出处. 一.文件的输入输出 fstream提供了三个类,用来实现c++对文件的操作.(文件的创建.读.写). ifstream -- 从已有的文件读入 ofstream -- 向文件写内容 fstream - 打开文件供读写 文件打开模式: ios::in             只读 ios::out            只写 io

根据txt文件中指定的文件名进行文件分类

根据txt文件中指定的文件名进行文件分类: // 根据txt文件中指定的文件名进行文件分类 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <windows.h> #include <io.h> #include <direct.h> #include <string.h> void Remove_End_Char(char a[])

利用spring batch 读取数据库中的数据写入到txt文件中

写一个job,其配置文件为: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:batch="http://www.springfram

从txt文件中读取数据放在二维数组中

1.我D盘中的test.txt文件内的内容是这样的,也是随机产生的二维数组 /test.txt/ 5.440000 3.4500006.610000 6.0400008.900000 3.0300000.140000 2.7400008.920000 7.2900002.580000 7.4300001.850000 6.1300001.350000 4.280000 ... ... 2.在我的test.cpp中添加头文件,即可使用FILE类来读取txt文件中的数据 #include <stdi

将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件

原文地址:将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件 需求如下:编写一个程序 将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中 a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔. 废话不多说,直接上代码: package javase.arithmetic;   import com.google.common.base.Charsets; import com.google.common.base.Joiner;

java将数据写入到txt文件中(txt有固定的格式)

java将数据写入到txt文件中,这个应该对于学过java I/O的人来说是很简单的事情了,但是如果要将数据以固定的格式写入到txt文件中,就需要一定的技巧了. 这里举个简单的例子,以供参考: 比如我要将数据写成下面的样子: 1      |      2      |        3       |        4 5      |      6      |        8       |        9 也许看起来很简单的,因为每个数据所代表的长度是不一样的,也有可能编码不一样,所