⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 project.c

📁 本下载文件是《C/C++图像处理编程》一书的演示程序
💻 C
字号:
//          Ex8
//  水平投影与图像颜色反转

#include <windows.h>
#include "image32.h"
 
extern HDC	  hMemDC;
extern struct IMAGE	*image;
extern struct IMAGE *Image[10];
  
void ImageCopy(int m,int n); //   图象复制

void Project(HWND hWnd)
{
  LOGPEN lpRed   = {PS_SOLID,1,1,RGB(255,0,0)},
         lpGreen = {PS_SOLID,1,1,RGB(0,255,0)},
         lpBlue  = {PS_SOLID,1,1,RGB(0,0,255)},
         lpBlack = {PS_SOLID,1,1,RGB(0,0,0)};
  HPEN   lpRedPen,lpGreenPen,lpBluePen,lpBlackPen;
  int  i,j,k,n,wid,hei,sum;
  BYTE buf[4096],buf2[3][2048];

  if ((Image[0]->hdib==NULL)||(Image[0]->bitcount<8)) return; 
 
  ClearDDB();
  WriteDDB(Image[0],  0,  0, 0, 0,512,512);

  wid=Image[0]->wid;
  hei=Image[0]->hei;
  n  =Image[0]->bpp;
 
  for (k=0;k<n;k++) {              //  水平投影
    for (i=0;i<hei;i++) {
      getimage(Image[0],0,i,wid,1,buf);
      sum=0;
      for (j=0;j<wid;j++) {
        sum+=buf[j*n+k];
	  }
      buf2[k][i]=sum/wid;
	}
  }

  lpRedPen   = CreatePenIndirect(&lpRed);
  lpGreenPen = CreatePenIndirect(&lpGreen);
  lpBluePen  = CreatePenIndirect(&lpBlue);
  lpBlackPen = CreatePenIndirect(&lpBlack);

  hMemDC=CreateMemDC();

  SelectObject(hMemDC,lpBlackPen);
  MoveToEx(hMemDC,wid+300,0,NULL);
  LineTo(hMemDC,wid+300,hei);
  for (k=0;k<n;k++) {
    if (n==1) 
      SelectObject(hMemDC,lpBlackPen);
	else {
      if (k==0)
        SelectObject(hMemDC,lpBluePen);
	  else if (k==1)
        SelectObject(hMemDC,lpGreenPen);
	  else
        SelectObject(hMemDC,lpRedPen);
	}
    MoveToEx(hMemDC,wid+300-buf2[k][1],1,NULL);
    for (i=1;i<hei-1;i++) {
      LineTo(hMemDC,wid+300-buf2[k][i],i);
	}
  }
  DeleteMemDC(hMemDC);

  ImageCopy(0,1);
  if (2*hei<700) {                 //  图像颜色反转
    for (i=0;i<hei;i++) {
      getimage(Image[1],0,i,wid,1,buf);
      for (j=0;j<wid*n;j++) {
        buf[j]=255-buf[j];
	  }
	  setimage(Image[1],0,i,wid,1,buf);
	}
    WriteDDB(Image[1],0,hei+20,0,0,wid,hei);
  }
  InvalidateRect(hWnd,NULL,FALSE);
}

 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -