c语言读取一个图像文件格式,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*
** 这个程序是读取jpg图像的
** 后续加上jpg图像打开和存放
*/ #include
#include
#include
#include
#include #define SOI 0xD8 //文件头
#define EOI 0xD9 //文件尾
#define APP0 0xE0 //定义交换格式和图像识别信息
#define SOF0 0xC0 //帧开始(标准 JPEG)
#define DQT 0xDB //定义量化表
#define DHT 0xC4 //定义 Huffman 表(霍夫曼表)
#define SOS 0xDA // 扫描行开始
#define DRI 0xDD //定义重新开始间隔
#define COM 0xFE //注释 unsigned short jpgWidth; //图像的宽
unsigned short jpgHeight; //图像的高
unsigned char bitDepth; //图像类型,每像素位数
unsigned short jpgXpelsPerMeter; //水平分辨率
unsigned short jpgYpelsPerMeter; //垂直分辨率
unsigned char SOF_find=0; char readPath[100]; //图像路径
unsigned char CurrentByte; //当前字节
unsigned short CurrentWord; //当前word
unsigned int BytePos; //当前字节的位置 bool readjpg(char *jpgName); //读取路径
void showjpg(); //显示
void GetJpgSize(FILE *fp); //获取大小 /****************************分割线**************************************/
bool readjpg(char *jpgName)
{
unsigned char Flag_1,Flag_2; //文件头 FFD8
unsigned short Xdensity,Ydensity;
/*unsigned char SOS_find=0;
unsigned int FileLength;
unsigned char Length;*/
//二进制读方式打开指定的图像文件
FILE *fp;
fp=fopen(jpgName,"rb");
if(fp==0)
{
perror("jpgName"); //提示错误信息
getch();
exit(EXIT_FAILURE); //出现错误,终止程序。
} /*
判断文件类型是否为JPG
检查第1, 2字节
*/
fread(&Flag_1,1,1,fp);
fseek(fp,1L,0);
fread(&Flag_2,1,1,fp);
if(( Flag_1 != 0xff) || (Flag_2 != 0xd8) )
{
printf("Not a jpg file?? (SOI)\n");
exit(EXIT_FAILURE);
}
//开始寻找开始位置
GetJpgSize(fp); fclose(fp);
return 1;
} void showjpg()
{
//窗口大小为图片大小
initgraph(jpgWidth,jpgHeight+40);
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice(); setfont(16, 8, "宋体");
char width[5],height[5];
sprintf(width, "%d",jpgWidth);
sprintf(height, "%d",jpgHeight); outtextxy(0,0,"图像的宽:");
outtextxy(10+textwidth("图像的宽:"),0,width); outtextxy(jpgWidth/2,0,"图像的高:");
outtextxy(jpgWidth/2 + 10 + textwidth("图像的高"),0,height); IMAGE img; // 定义 IMAGE 对象
loadimage(&img, readPath); //读取图片到 img 对象中
putimage(0, 40, &img); // 在坐标 (0, 0) 位置显示 IMAGE 对象 getch();
closegraph();
} //获取照片尺寸大小
void GetJpgSize(FILE *fp)
{ unsigned char HeightH;
unsigned char HeightL;
unsigned char WidthH;
unsigned char WidthL;
unsigned char BitDepth;
while(!SOF_find)
{
CurrentByte=fgetc(fp);
if(CurrentByte!=0xFF)
continue;
//发现标记符
CurrentByte=fgetc(fp);
switch(CurrentByte)
{
case APP0: break;
case SOF0:
fseek(fp,2L,1); BitDepth=fgetc(fp); //图像高的高位和低位
HeightH=fgetc(fp); HeightL=fgetc(fp); //图像宽的高位和低位
WidthH=fgetc(fp); WidthL=fgetc(fp); SOF_find=1;
break;
default:
break;
}
}
jpgHeight=HeightH * 256 + HeightL;
jpgWidth=WidthH * 256 + WidthL; } void main()
{
printf("输入图像的完整路径及文件名:\n");
gets(readPath);
readjpg(readPath);
printf(" bitDepth=%x\n height=%x\n width=%x\n ",bitDepth,jpgHeight,jpgWidth);
printf(" jpgXpelsPerMeter=%x\n jpgYpelsPerMeter=%x\n",jpgXpelsPerMeter,jpgYpelsPerMeter); printf("按任意键显示图像\n");
getch();
showjpg();
}
c语言读取一个图像文件格式,求指导,如何用c语言实现读取*.raw格式图像相关推荐
- C语言如何编程三点求圆方程,如何用C语言描述一个圆的方程
满意答案 邪剑仙_绝 2017.11.23 采纳率:52% 等级:9 已帮助:763人 /*先写第一个吧,对于C图形库了解不多,我想你应该是少包含了哪个 头文件,或是没有设置编译器的图形库吧*/ ...
- C语言输入一个任意数求各位数的和
C语言输入一个任意数求各位数的和 int main(void) {int x, r, s = 0;scanf("%d", &x);while (x>0){r = x ...
- 用c语言读取固定大小的raw格式图像并统计灰度值
目的: 1.读取[256*256]大小的raw格式图像 2.统计灰度值 3.将结果写回result.txt 代码: 方法一 #include<stdio.h> #include<st ...
- C语言实现raw格式图像的读入和存取
C语言实现raw格式图像的读入和存取 raw格式是在生活中比较少见的图像格式,但是它作为一种相机的原始图像数据,在图像处理领域用处很多.raw格式的图像相当于就是一个二进制流,所有图像数据按顺 ...
- 使用Python读取raw格式图像并显示
整理日期:2020-02-13 整理内容:使用Python读取raw格式图像并显示 代码如下: import cv2 #OpenCV包 import numpy as np# 首先确定原图片的基本信息 ...
- 医学图像处理——数据预处理(.mhd+raw格式图像读取和显示)
数据预处理(.mhd+raw格式图像读取和显示) 说明: 1.mhd+raw背景 2..mhd说明图像数据的信息 3.Python读取和显示mhd图像数据 3.1python库的安装 3.1代码运行展 ...
- RAW图像详解及使用Python读取raw格式图像并显示
一.RAW图像详解 1.1 什么是raw格式图像? RAW在英文中的解释是未处理的.自然状态的,这也就是RAW文件的真谛.RAW图像就是CMOS或者CCD图像感应器将捕捉到 的光源信号转化为数字信号的 ...
- 微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析
聚焦源代码安全,网罗国内外最新资讯! 2020年12月和2021年2月,微软两次针对"照片"应用的Raw格式图像编码器发布安全更新,其中2月9日修复的是CVE-2021-2409 ...
- 如何获取图像的驱动_Adobe Camera Raw 12 Mac(Raw格式图像ps插件) v12.2.1.417
Adobe Camera Raw 12 Mac版可以让摄影师在熟悉的Photoshop界面内打开并编辑这些RAW文件,极大的方便了摄影师的工作. Adobe Camera Raw 12 for Mac ...
最新文章
- Ubuntu配置伪分布式hadoop时报错:localhost: mkdir: 无法创建目录/usr/local/hadoop/logs: 权限不够...
- android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料
- angular 模块构建_通过构建全栈应用程序学习Angular 6
- 河南农大姚文与中科院北京基因组所章张课题组合作发布真核生物长链反向重复序列数据库...
- Android热更新开源项目Tinker集成实践总结
- 漫话:如何给女朋友解释什么是2PC(二阶段提交)?
- Oracle 20c 新特性:XGBoost 机器学习算法和 AutoML 的支持
- 输入3个数a,b,c,按大小顺序输出
- 基于jquery,bootstrap数据验证插件bootstrapValidator 教程
- 计算机文献影印版,计算机网络 参考文献
- 23数据错误循环冗余检查/无法读取源文件或磁盘 解决
- jwplayer html插件,jQuery插件JWPlayer视频播放器用法实例分析
- linux远程桌面太卡,确保远程桌面管理顺畅稳定的方法
- 云服务器win10系统初始密码,win10进入安全模式需要密码初始密码是什么
- windows xp快捷键
- 连载 北漂十二年祭 3 --Leo第二次面试,无意中的霸王面
- 计算该年该月该日天数 一年中有 12 个月,而每个月的天数是不一样的。其中大月 31 天,分别为 1,3,5,7,8,10,12 月,小月 30 天,分别 为 4,6,9,11 月。
- RSRP RSRQ RSSI SNR的含义和区别
- 嵩天python爬虫百度云盘_基于MOOC嵩天《Python网络爬虫与信息提取》视频学习记录——第一周:requests库...
- 设有 4道作业,它们的提交时间及执行时间如下,试计算在单道程序环境下,采用先来先服务调度算法和短作业优先调度算法时的平均周转时间和平均带权周转时间,并指出它们的调度顺序。