opencv从txt文本读取像素点并显示
opencv从txt文本读取像素点并显示
文本储存格式为每行一个像素点,排列为RGB。每帧图像的帧头为65535. 如下图所示
废话不多说,代码如下:
//
#include <iostream>
#include <opencv2\opencv.hpp>
#include <fstream>
#include <string>
#include <WINSOCK2.H>
#include <STDIO.H> #define MAX 32
using namespace cv;
using namespace std; Vec3b GetPoint( void )
{
Vec3b pixels; //声明像素点储存变量//static int64 count = 0;cout<<count++<<endl;
char Buf[MAX];//声明一个buf,用来储存一行
//声明三个空格,用于分割像素点
int firstspace = ; int secondspace = ; int thirdspace = ;
//读取一行数据
cin.getline(Buf,MAX);
//如果读到的是个回车或者换行,则继续读
while(Buf[] == '\0'||Buf[] == ' ' ) cin.getline(Buf,MAX);
//遍历整个buf,找到三个空格的位置
for(int i = ;i < MAX ;i ++ )
{
if(Buf[i] == ' ')
{
if(firstspace != && secondspace != && thirdspace ==) thirdspace =i;
if(firstspace != && secondspace == ) secondspace = i;
if(firstspace == ) firstspace = i; } }
//将三个空格之间的像素点解码储存
for(int i = ; i < firstspace; i++) { pixels[] += (Buf[i] - )*pow(,firstspace--i); }
for(int i = firstspace+; i < secondspace; i++) { pixels[] += (Buf[i] - )*pow(,secondspace--i); }
for(int i = secondspace+; i < thirdspace; i++) { pixels[] += (Buf[i] - )*pow(,thirdspace--i); }
//抛出这个像素点
return pixels;
} int main(int argc, char* argv[])
{
//首先定义一个图像buf,并初始化为0 ,此处一定要初始化图像大小和通道数,否则迭代器无法使用
Mat ReceiveImage = Mat::zeros(,,CV_8UC3);
//声名一个窗口用于显示
namedWindow("picture");
//声明buf,用于缓冲入的储存单个字符
char ReadBuf;
//声明帧头判断标志位
int flag = ;
//输入流重定向,将输入流定向到相应文件,定向错误则退出
if(freopen("rgb.txt","r", stdin) == NULL ) { fprintf(stderr,"open error"); return -;}
//进入循环读图模式
while()
{ //帧头判断
if(flag != )
{
cin>>ReadBuf;
if(ReadBuf == '' && flag == ) flag = ;
else if(ReadBuf == '' && flag == ) flag = ;
else if(ReadBuf == '' && flag == ) flag = ;
else if(ReadBuf == '' && flag == ) flag = ;
else if(ReadBuf == '' && flag == ) flag = ;
else flag = ;
}else{ flag = ;
//迭代器读图储存
Mat_<Vec3b>::iterator itbeg = ReceiveImage.begin<Vec3b>() ;
Mat_<Vec3b>::iterator itend = ReceiveImage.end<Vec3b>() ;
for( ;itbeg != itend ;itbeg++ )
{ *itbeg = GetPoint(); }
imshow("picture",ReceiveImage);
waitKey();
}
}
return ;
}
opencv从txt文本读取像素点并显示的更多相关文章
- OpenCV【2】---读取png图片显示到QT label上的问题
问题一: 操作图片test.png是一个365x365的PNG图片 通过OpenCV自带的GUI显示出来图像是没问题的,例如以下操作代码所看到的: QStringfileName=QFileD ...
- ajax读取txt文本时乱码的解决方案
前言:第一次学习使用 ajax 就是用来读取文本 先给出现乱码的代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/ ...
- java 读取CSV数据并写入txt文本
java 读取CSV数据并写入txt文本 package com.vfsd; import java.io.BufferedWriter; import java.io.File; import ja ...
- 从txt文本内读取数据(逐行读取),执行循环
如下图,名称为1.txt的文本文件内有链接若干条,预期是循环读取txt文本内链接,而后访问该链接 脚本如下: for line in open('C:\\Users\\Beckham\\Desktop ...
- 使用java读取解析txt文本数据,管理简单的数据
在实际开发中会经常碰到使用编程语言读取文本文件的内容,这内容可以是各种各样的一下本人写出我自己做的一个读取文本文件的例子,文件中存储的是我的个人网站 www.yzcopen.com 导航栏目因为懒得使 ...
- python读取、写入txt文本内容
转载:https://blog.csdn.net/qq_37828488/article/details/100024924 python常用的读取文件函数有三种read().readline().r ...
- JAVA读取TXT文本中的数据
现在在Demo.txt中存在数据: ABC 需要将ABC从文本文件中读取出来 代码片: import java.io.*; class FileReaderDemo { public static v ...
- 自动化测试-17.selenium数据的分离之txt文本的写入与读取
前言 数据量偏小时,用txt文本保存数据比较合适,以-进行区分,为什么不用:呢?原因是,我们在使用数据时,会存在url地址的情况,里面宝行:所以用-进行替代 此处附上代码 #encoding=utf- ...
- Javascript写入txt和读取txt文件的方法
文章主要介绍了Javascript写入txt和读取txt文件的方法,需要的朋友可以参考下1. 写入 FileSystemObject可以将文件翻译成文件流. 第一步: 例: 复制代码 代码如下: Va ...
随机推荐
- parsec-2.1 编译错误
OS: Ubuntu 14.04 LTS (x86_64) 参考:https://forums.freebsd.org/threads/security-openssl-build-failure.4 ...
- Erlang Materials Outline
Motivation 因The Erlang Run-Time System迟迟没有出版,不等了. 梳理一下学习Erlang过程中的学习笔记,以准备一个关于Erlang的small but tight ...
- MySQL数据库之------DOS命令行的基本操作
1. 进入D盘的如下路径: 按住 ctrl+shift ,右键,选择在此处打开命令行窗口.出现图2. 图 1 图 2 2. . 3. 图 3 4. 图 4 ...
- javascript中escape()、unescape()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()比较
这些URI方法encodeURI.encodeURIComponent().decodeURI().decodeURIComponent()代替了BOM的escape()和unescape()方法.U ...
- Python实例3
3.一个整数,它加上100后是一个完全平方数,再加上268又是一个完全平方数,请问该数是多少? 正解: 源码: #!/usr/bin/python # -*- coding: UTF-8 -*- im ...
- commons-httpclient中的超时设置
connectionTimeout与soTimeout的差异,前者指创建一个有效的客户端到服务端链接的最大允许时间,后者指socket接收data的时间. connectionManager.getP ...
- install google chrome
32bit: wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb sudo dpkg -i go ...
- LeetCode() Basic Calculator 不知道哪里错了
class Solution {public: int calculate(string s) { stack<int> num; stack<ch ...
- C++转义字符
R"()"括号中间的字符串可以去掉转义字符
- TP中关于自定义类库的添加和使用
ThinkPHP的类库主要包括公共类库和应用类库,都是基于命名空间进行定义和扩展的.只要按照规范定义,都可以实现自动加载. 类库存放位置:Think目录:系统核心类库Org目录:第三方公共类库demo ...