c语言 遍历.jpg图像,求指导,如何用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语言 遍历.jpg图像,求指导,如何用c语言实现读取*.raw格式图像相关推荐
- RAW图像详解及使用Python读取raw格式图像并显示
一.RAW图像详解 1.1 什么是raw格式图像? RAW在英文中的解释是未处理的.自然状态的,这也就是RAW文件的真谛.RAW图像就是CMOS或者CCD图像感应器将捕捉到 的光源信号转化为数字信号的 ...
- 使用Python读取raw格式图像并显示
整理日期:2020-02-13 整理内容:使用Python读取raw格式图像并显示 代码如下: import cv2 #OpenCV包 import numpy as np# 首先确定原图片的基本信息 ...
- c语言读取一个图像文件格式,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
- c语言 写出raw文件,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
- c语言图片raw保存,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
- C语言读取load格式文件,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
- C语言读取图像像素坐标,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
- C语言读取raw格式图像,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
- raw转bmp程序c语言,求指导,如何用c语言实现读取*.raw格式图像
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 /* ** 这个程序是读取jpg图像的 ** 后续加上jpg图像打开和存放 */ #include #include #include #include ...
最新文章
- python3精要(51)-json
- #pragma once与#ifndef的区别?
- Java中的反射的应用
- Java课堂测试01及感想
- [bzoj2850]巧克力王国_KD-Tree
- STL stack 容器
- DFS序--树的问题转化为区间问题
- 第2章 数据可视化基础
- java项目怎么启动_github上的java项目怎么运行(面向小白)
- steamcommunity302怎么用【使用方法】
- dvi线支持多少分辨率_dvi接口有哪几种_dvi支持最大分辨率
- js清除cookies
- 如何在TOMCAT上安装Liferay
- 通过Python实现对xls表格按类别统计计数
- 为什么在线客服系统很重要
- 编程_三大编程思想:POP、OOP、AOP
- vue动态面包屑导航
- 【Tableau Desktop 企业日常技巧16】Tableau下载和安装ODBC驱动 连接MySQL方法及过程详解
- FileSystemWatcher触发多次Change事件的解决办法
- Intel 酷睿 i3、i5、i7 CPU 处理器之间有什么区别
热门文章
- yum php devel_yum源里找不到 php54w-devel,求可用yum源
- python histo 改变 bins 大小_子批次大小python
- centos7 界面中文都是方块_Centos 7 项目管理系统部署之Trac(一)
- java多线程生产者与消费者问题_java多线程实现生产者与消费者问题
- 蓝宝石 470 原版 bios_想怎么玩就怎么玩!改造双BIOS显卡,不再为噪音和性能选择而烦恼...
- mq多个消费者消费一个消息_消息中间件——RabbitMQ(五)快速入门生产者与消费者...
- 小学5年级计算机考试作文,我的小学老师五年级优秀作文(通用10篇)
- MLPrimitive如何添加自定义的Primitive
- one-hot与哑变量(dummy variable)的区别
- python安装unittest_python 自动化测试 (一):安装 requests,unittest,HTMLTestRunner