python_小蟒蛇 发表于 2019-8-11 17:24:53

有大佬用C处理过图像吗,萌新请教——救救孩子

对于图像的逆透视变换,用matlab实现   或者c实现   望大家不吝赐教

python_小蟒蛇 发表于 2019-8-11 17:26:46

救命啊
{:5_92:}

python_小蟒蛇 发表于 2019-8-11 19:27:58

来人啊

yuesezhenmei 发表于 2019-8-14 16:35:45

easyx中 可以加载图片

python_小蟒蛇 发表于 2019-8-15 08:25:10

yuesezhenmei 发表于 2019-8-14 16:35
easyx中 可以加载图片

我要对图像进行处理

bin554385863 发表于 2019-8-15 10:37:39

python_小蟒蛇 发表于 2019-8-15 08:25
我要对图像进行处理

{:5_103:}那你还不如用Windows画图呢

python_小蟒蛇 发表于 2019-8-15 12:07:06

bin554385863 发表于 2019-8-15 10:37
那你还不如用Windows画图呢

不太明白大佬说的是什么神仙思路{:5_100:}嘿嘿

bin554385863 发表于 2019-8-15 12:19:04

python_小蟒蛇 发表于 2019-8-15 12:07
不太明白大佬说的是什么神仙思路嘿嘿

C 只是一门编程语言,图像处理需要软件.除非你自己用C图像库编写一个图像处理软件.

老张爱编程 发表于 2019-8-16 07:58:51

//只能处理bmp格式 24位
#include <stdio.h>
#include <stdlib.h>

//字节对齐,不然加载的数据一4字节对齐,会出现问题
#pragma pack(push)
#pragma pack(2)
//bmp分为 bmp文件头 bmp信息头 调色盘(24 32 没有) 位图数据
//一下是前两个的定义,其实Windows.h有,但我这是手机(Linux 电脑没在旁边时弄得)
//所以就从网上扒下来了

typedefunsigned short WORD;
typedef unsigned long DWORD;
typedeflong LONG;

typedef struct tagBITMAPFILEHEADER {
WORD    bfType;
DWORD   bfSize;
WORD    bfReserved1;
WORD    bfReserved2;
DWORD   bfOffBits;
} BITMAPFILEHEADER;


typedef struct tagBITMAPINFOHEADER{
DWORD      biSize;
LONG      biWidth;
LONG      biHeight;
WORD       biPlanes;
WORD       biBitCount;
DWORD      biCompression;
DWORD      biSizeImage;
LONG      biXPelsPerMeter;
LONG      biYPelsPerMeter;
DWORD      biClrUsed;
DWORD      biClrImportant;
} BITMAPINFOHEADER;

#pragma pack(pop)

int main(){
        //图像的地址
        char strFile = "黄鹤楼.bmp";
    char strBuf;
        FILE* fp = fopen(strFile,"rb");       
        if(fp == NULL) {
                printf("打开文件失败...\n");
                return -1;
        }
        //保存图像地址
    FILE *fSava =fopen("灰度化.bmp","wb");
    BITMAPFILEHEADER bmpFileHead;   
    BITMAPINFOHEADER bmpInfoHead;
    fread(&bmpFileHead,sizeof(BITMAPFILEHEADER ),1,fp);   
    fread(&bmpInfoHead,sizeof( BITMAPINFOHEADER),1,fp);
    //BMP以BM开头                                  位数是不是24位
    if(bmpFileHead.bfType != 19978 || bmpInfoHead.biBitCount!=24){
         printf("这啥图片,不合格\n");
         getchar();
            return -1;
    }
    printf("图片大小为:%dbyte\n分辨率:%d * %d\nbmp数据偏移:%dbyte\n",bmpFileHead.bfSize\
    ,bmpInfoHead.biWidth,bmpInfoHead.biHeight   ,bmpFileHead.bfOffBits );
   
int size = bmpFileHead.bfSize - bmpFileHead.bfOffBits;
fwrite(&bmpFileHead,sizeof(bmpFileHead),1,fSava);
fwrite(&bmpInfoHead,sizeof(bmpInfoHead),1,fSava);
   for(int i = 0; i < size; i+=3){
                char color;
             fread(color,1,3,fp);                
             char buf = (color + color +color)/3;              //灰度化需要bmp格式 24位 32位多了个A
         for(int j = 0; j < 3; j++){               
            fwrite(&buf,1,1,fSava);
         }
   }
   
    fclose(fSava);
        fclose(fp);
    printf("写入完成!\n");
    getchar();
        return 0;
}

老张爱编程 发表于 2019-8-16 08:06:27

以上那个代码我只想说明C语言只依赖标准库也能对图像做处理,但我通常不会这么写,我会用Windows.h库....东西处理图片,因为里面麻烦的事不止这一点,这个是对全体处理还好,如果是想靠这种原始方法加载图片。。。(它的位图数据那块是从左下到右上排列不符合人的正常思维)

老张爱编程 发表于 2019-8-16 08:09:36

而且对与16 24 32 ..要分别做处理,而且有的位图数据对齐......

老张爱编程 发表于 2019-8-16 08:12:48

所以还是用Windows.h里的东西吧,关注一下BITMAP HBITMAP GetObject GetBitmapBits SetBitmapBits ....之类的

老张爱编程 发表于 2019-8-16 08:19:13

我刚刚没看你下面还有个东西,逆透视是什么?

python_小蟒蛇 发表于 2019-8-17 14:52:07

老张爱编程 发表于 2019-8-16 08:19
我刚刚没看你下面还有个东西,逆透视是什么?

就是图像变形了获取到的与实际不符合所以需要对图像矫正,比如梯形失真

bin554385863 发表于 2019-8-17 20:14:55

python_小蟒蛇 发表于 2019-8-17 14:52
就是图像变形了获取到的与实际不符合所以需要对图像矫正,比如梯形失真

你这和开发一个图形处理软件有啥区别{:5_103:}

2164930278 发表于 2019-8-17 22:10:10

老张爱编程 发表于 2019-8-16 07:58
//只能处理bmp格式 24位
#include
#include


厉害,应该精通C语言了吧{:5_90:}

老张爱编程 发表于 2019-8-17 23:07:51

2164930278 发表于 2019-8-17 22:10
厉害,应该精通C语言了吧

精通倒是没有,我只是想知道bmp里面是什么东西,就稍稍研究了下,感觉window里面的exe...这些东西的里面充满许多未知
页: [1]
查看完整版本: 有大佬用C处理过图像吗,萌新请教——救救孩子