全覆盖路径规划数据制作jpg转pgm
创始人
2024-05-24 10:43:33
0

生成自己想要的JPG数据,然后转成PGM数据

  • JPG数据的制作
  • 转PGM数据

JPG数据的制作

  习惯性使用c++,所以在制作JPG数的时候采用的**c++**写的,代码如下:

void moCreateImg()
{cv::Mat test_map(800,800,CV_8UC3,cv::Scalar(0,0,0));Rect rec = cv::Rect(cv::Point(200,200),cv::Point(600,600));vector  contour;contour.push_back(rec.tl());   // 左上角坐标信息contour.push_back(Point(rec.tl().x + rec.width , rec.tl().y ) );  // 右上角contour.push_back(Point(rec.tl().x + rec.width , rec.tl().y + rec.height)); // 左下角contour.push_back(Point(rec.tl().x , rec.tl().y + rec.height )); // 右下角// 多边形填充cv::fillConvexPoly(test_map, contour, cv::Scalar(255,255,255));//fillPoly函数的第二个参数是二维数组!!// 显示cv::namedWindow("test_map", cv::WINDOW_AUTOSIZE);cv::imshow("test_map", test_map);// 保存imwrite("./reuslt.jpg",test_map);waitKey(0);}

生成的结果如下:
请添加图片描述

转PGM数据

  生成jpg文件以后,先检查全覆盖路径规划中使用的数据是什么格式的,通过NotePad++软件打开以后发现是P5格式的:
  普及一下pgm格式,PGM文件的格式类型有P2和P5,但是我在转换的过程中发现还有P6,P2是纯文本格式,P5是二进制格式,从下图可知我需要的是P5二进制格式的pgm数据。
在这里插入图片描述  一开始采用C++实现,代码繁琐,后来直接用python进行转换,顿时感觉python太强了。

# coding=utf-8 
from PIL import Image
import os.path
import glob# python 函数
def jpg2pgm( jpg_file , pgm_dir ):# 首先打开jpg文件jpg = Image.open( jpg_file )out_name =(str)(os.path.join( pgm_dir , os.path.splitext( os.path.basename(jpg_file) )[0] ))+".pgm"# 创建目标pgm 文件jpg.convert('L').save(out_name)print("Save succeed!!!")# 将所有的jpg文件放在当前工作目录,或者 cd {存放jpg文件的目录}
for jpg_file in glob.glob("/home/ai/work/workspace/robot/path_planning/*.jpg"):jpg2pgm( jpg_file , "/home/ai/work/workspace/robot/path_planning/")

注意:
其中比较重要的是jpg.convert(‘L’),如果没有这一句命令,转换出来的是P6格式的pgm数据,因为我生成的jpg是三通道的,从上面的代码中可以看到。
结果如下:
在这里插入图片描述
科普:
jpg = jpg.convert() 是图像实例对象的一个方法,接受一个 mode 参数,用以指定一种色彩模式

PIL有九种不同模式:

1: 1位像素,黑白,每字节一个像素存储
L: 8位像素,黑白
P: 8位像素,使用调色板映射到任何其他模式
RGB: 3x8位像素,真彩色
RGBA: 4x8位像素,带透明度掩模的真彩色
CMYK: 4x8位像素,分色
YCbCr: 3x8位像素,彩色视频格式
I: 32位有符号整数像素
F: 32位浮点像素

=================================== 附加==================================
全覆盖路径使用该数据集结果:
在这里插入图片描述

仿真机器人运行结果:
在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...