在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例图形和图像处理 → 图像处理基础框架及典型算法实现程序设计

图像处理基础框架及典型算法实现程序设计

图形和图像处理

下载此实例
  • 开发语言:C/C++
  • 实例大小:82.81M
  • 下载次数:36
  • 浏览次数:151
  • 发布时间:2022-01-11
  • 实例类别:图形和图像处理
  • 发 布 人:xiezitai
  • 文件格式:.zip
  • 所需积分:4

实例介绍

【实例简介】图像处理基础框架及典型算法实现程序设计

使用高级程序设计语言完成遥感图像的显示、放大、缩小、平移等常用的也是必须的图像显示操作,建立简单的遥感图像处理界面,在该界面上完成图像的打开、图像的显示、图像的处理、结果图像的保存等等。要求使用高级程序语言完成设计和实现,不得直接使用商用软件做二次开发。

涉及的知识点包括:图像格式、图像的读写、显示,图像增强、图像分割、形态学处理等等遥感数字图像处理课程中学过的典型算法。

具体内容包括:

1)完成图像处理界面的构建,界面上有打开图像、处理图像、保存图像的菜单栏或工具栏。点击打开图像按钮能实现对话框形式交互找到要打开的图像,点击保存图像,能将图像另存到需要的文件夹下。

2)实现bmpjpgtiff等图像格式的读写,学会调用图像处理库函数,实现不同格式图像文件的读和保存;(此部分内容让同学复习数字图像数据的本质,知道对图像进行处理本质上是对像素进行处理、不管什么格式的图像,重要的是读出里面的像素,各种格式图像只是读入方法不一样,对图像获得像素后,其他处理过程都相同)

3)完成图像处理函数的实现,需要完成灰度图像拉伸,图像增强、图像分割等算法,学会函数的定义,函数的调用;需要设计相应的菜单,完成相应的操作,处理结果直接实时显示在屏幕上,并且处理结果可以保存出来。(每位同学至少完成两个算法,而且必须有一个与图像卷积有关的算法)

特别注意:全部过程需要高级程序语言实现,充分理解图像处理的底层开发过程,深入理解图像处理的理论和方法。

(后面给了部分参考方法和程序)


【实例截图】

from clipboard

【核心代码】
// 图像处理Doc.cpp: C图像处理Doc 类的实现
//

#include "pch.h"
#include "framework.h"
// SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的
// ATL 项目中进行定义,并允许与该项目共享文档代码。
#ifndef SHARED_HANDLERS
#include "图像处理.h"
#endif

#include "图像处理Doc.h"

#include <propkey.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// C图像处理Doc

IMPLEMENT_DYNCREATE(C图像处理Doc, CDocument)

BEGIN_MESSAGE_MAP(C图像处理Doc, CDocument)
ON_COMMAND(ID_IMG_READ, &C图像处理Doc::OnImgRead)
ON_COMMAND(ID_GRAY_EXCHANGE, &C图像处理Doc::OnGrayExchange)
ON_COMMAND(ID_IMG_SAVE, &C图像处理Doc::OnImgSave)
ON_COMMAND(ID_IMG_READ1, &C图像处理Doc::OnImgRead1)
ON_COMMAND(ID_TXZQ_ZZLB, &C图像处理Doc::OnTxzqZzlb)
ON_COMMAND(ID_RH_PREWITT, &C图像处理Doc::OnRhPrewitt)
ON_COMMAND(ID_RH_LAPLACIAN, &C图像处理Doc::OnRhLaplacian)
END_MESSAGE_MAP()


// C图像处理Doc 构造/析构

C图像处理Doc::C图像处理Doc() noexcept
{
// TODO: 在此添加一次性构造代码

}

C图像处理Doc::~C图像处理Doc()
{
}

BOOL C图像处理Doc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;

// TODO: 在此添加重新初始化代码
// (SDI 文档将重用该文档)

return TRUE;
}




// C图像处理Doc 序列化

void C图像处理Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 在此添加存储代码
}
else
{
// TODO: 在此添加加载代码
}
}

#ifdef SHARED_HANDLERS

// 缩略图的支持
void C图像处理Doc::OnDrawThumbnail(CDC& dc, LPRECT lprcBounds)
{
// 修改此代码以绘制文档数据
dc.FillSolidRect(lprcBounds, RGB(255, 255, 255));

CString strText = _T("TODO: implement thumbnail drawing here");
LOGFONT lf;

CFont* pDefaultGUIFont = CFont::FromHandle((HFONT) GetStockObject(DEFAULT_GUI_FONT));
pDefaultGUIFont->GetLogFont(&lf);
lf.lfHeight = 36;

CFont fontDraw;
fontDraw.CreateFontIndirect(&lf);

CFont* pOldFont = dc.SelectObject(&fontDraw);
dc.DrawText(strText, lprcBounds, DT_CENTER | DT_WORDBREAK);
dc.SelectObject(pOldFont);
}

// 搜索处理程序的支持
void C图像处理Doc::InitializeSearchContent()
{
CString strSearchContent;
// 从文档数据设置搜索内容。
// 内容部分应由“;”分隔

// 例如:     strSearchContent = _T("point;rectangle;circle;ole object;");
SetSearchContent(strSearchContent);
}

void C图像处理Doc::SetSearchContent(const CString& value)
{
if (value.IsEmpty())
{
RemoveChunk(PKEY_Search_Contents.fmtid, PKEY_Search_Contents.pid);
}
else
{
CMFCFilterChunkValueImpl *pChunk = nullptr;
ATLTRY(pChunk = new CMFCFilterChunkValueImpl);
if (pChunk != nullptr)
{
pChunk->SetTextValue(PKEY_Search_Contents, value, CHUNK_TEXT);
SetChunkValue(pChunk);
}
}
}

#endif // SHARED_HANDLERS

// C图像处理Doc 诊断

#ifdef _DEBUG
void C图像处理Doc::AssertValid() const
{
CDocument::AssertValid();
}

void C图像处理Doc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG


// C图像处理Doc 命令


void C图像处理Doc::OnImgRead()
{
// TODO: 在此添加命令处理程序代码

CString filename;
CString szfilter = _T("BMP Files(*.bmp)|*.bmp|BMP Files(*.bmp)|*.bmp|JPG Files(*.jpg)|*.jpg|All Files(*.*)|(*.*)||");
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, szfilter, NULL);
if (dlg.DoModal() == IDOK)
{
filename = dlg.GetPathName();
}
else
return;
     //filename=_T("E:\\桌面\\图像处理\\数据\\设计1\\rest.raw",);
if (!(m_Img.Load(filename)))
{
AfxMessageBox(_T(" 图像打开失败"));
return;
}

Width = m_Img.GetWidth();
Height = m_Img.GetHeight();
gray = m_Img.GetBits();
UpdateAllViews(NULL);
}


void C图像处理Doc::OnGrayExchange()
{
// TODO: 在此添加命令处理程序代码

result = new unsigned char[Height*Width];//分配内存
unsigned char maxg, ming;
maxg = 0; // 灰度最大值,初始化为0
ming = 255; // 灰度最小值,初始化为255

float a, b; // 灰度线性拉伸两个参数
for (int i = 0; i < Height; i )
{
for (int j = 0; j < Width; j )
{
// 只要比当前的最大值还大
// 它就是新的最大值
if (maxg < gray[i * Width j])
maxg = gray[i * Width j];

// 只要比当前的最小值还小
// 它就是新的最小值
else if (ming > gray[i * Width j])
ming = gray[i * Width j];
}
}
// 求线性拉伸的两个参数
// 解下面的方程组得到a,b
// 255 = a*maxg b
//   0 = a*ming b
// 写成255.0f在计算时就当作浮点型了
a = 255.0f / (maxg - ming);
b = -255.0f * ming/(maxg - ming);

// 创建线性查找表,用公式y=ax b计算
unsigned char newgrey[256];
for (int i = 0; i < 256; i )
{
// 加上0.5再作强制转换便可达到四舍五入的效果
newgrey[i] = (unsigned char)(a * i b 0.5);
}

// 进行线性拉伸
for (int i = 0; i < Height; i )
{
for (int j = 0; j < Width; j )
{
// 由原始灰度从线性查找表中找到新的灰度
result[i*Width j] = newgrey[gray[i * Width j]];
}
}

AfxMessageBox(_T("图像处理成功,可进行图像保存等后续操作"));
m_Result_Img.CreateFromArray(result,Width,Height,8,Width,0);

}


void C图像处理Doc::OnImgSave()
{
// TODO: 在此添加命令处理程序代码
if (!m_Img.IsValid())
{
AfxMessageBox(_T("请先处理影像得到结果影像"));
}

CString filename;
CString szfilter = _T("BMP Files(*.bmp)|*.bmp|JPG Files(*.jpg)|*.jpg|All Files(*.*)|(*.*)||");
CFileDialog dlg(FALSE, _T("bmp"), NULL, OFN_HIDEREADONLY, szfilter, NULL);
if (dlg.DoModal() == IDOK)
{
filename = dlg.GetPathName();
}
else return;
//filename=_T("E:\\桌面\\图像处理\\数据\\设计1\\result2.bmp");
m_Result_Img.Save(filename, CXIMAGE_FORMAT_BMP);
AfxMessageBox(_T("结果影像成功保存到指定地址"));
}


void C图像处理Doc::OnImgRead1()
{
// TODO: 在此添加命令处理程序代码
Height = 1210;
Width = 1024;
gray = new unsigned char[Height * Width];// 分配内存
FILE* ftest;// 文件指针
fopen_s(&ftest, "E:\\桌面\\图像处理\\数据\\设计1\\test.raw", "rb"); // 以二进制读的方式打开原始台rax文件
if (!ftest)
AfxMessageBox(_T("图像打开失败,请检查图像地址是否正确"));
//从原始文件中读取灰度值到数组
fread(gray, sizeof(unsigned char), Height * Width, ftest);
//这个函数第一个参数是要保存读取到怕数据的指针
//这里我们将读取到的数据保存在灰度数组中
//第二个参数是单个数据的长度,即每个像素占的字节
//第三个参数是数据的个数,即像素个数
//第四个参数是文件指针,即从哪个文件中读
//关闭文件.
fclose(ftest);
AfxMessageBox(_T("图像打开成功,可进行图像处理等后续操作"));
}


void C图像处理Doc::OnGrayExchange1()
{
// TODO: 在此添加命令处理程序代码
result = new unsigned char[Height * Width];//分配内存
unsigned char maxg, ming;
maxg = 0; // 灰度最大值,初始化为0
ming = 255; // 灰度最小值,初始化为255

float a, b; // 灰度线性拉伸两个参数
for (int i = 0; i < Height; i )
{
for (int j = 0; j < Width; j )
{
// 只要比当前的最大值还大
// 它就是新的最大值
if (maxg < gray[i * Width j])
maxg = gray[i * Width j];

// 只要比当前的最小值还小
// 它就是新的最小值
else if (ming > gray[i * Width j])
ming = gray[i * Width j];
}
}
// 求线性拉伸的两个参数
// 解下面的方程组得到a,b
// 255 = a*maxg b
//   0 = a*ming b
// 写成255.0f在计算时就当作浮点型了
a = 255.0f / (maxg - ming);
b = -255.0f * ming / (maxg - ming);

// 创建线性查找表,用公式y=ax b计算
unsigned char newgrey[256];
for (int i = 0; i < 256; i )
{
// 加上0.5再作强制转换便可达到四舍五入的效果
newgrey[i] = (unsigned char)(a * i b 0.5);
}

// 进行线性拉伸
for (int i = 0; i < Height; i )
{
for (int j = 0; j < Width; j )
{
// 由原始灰度从线性查找表中找到新的灰度
result[i * Width j] = newgrey[gray[i * Width j]];
}
}

AfxMessageBox(_T("图像处理成功,可进行图像保存等后续操作"));
m_Result_Img.CreateFromArray(result, Width, Height, 8, Width, 0);
}








void C图像处理Doc::OnTxzqZzlb()
{
// TODO: 在此添加命令处理程序代码
if (!m_Img.IsValid())
{
AfxMessageBox(_T("请先打开图像"));
return;
}
int W = m_Img.GetWidth();
int H = m_Img.GetHeight();
AfxMessageBox(_T("已完成图像中值滤波"));
//unsigned char *gray;
//gray = (unsigned char*)malloc(sizeof(char)*H*W);
//FILE*fp;
//fopen_s(&fp, "E:\\桌面\\图像处理\\数据\\设计1\\test.raw", "rb");
//fread(gray,sizeof(unsigned char),H*W,fp);

int TempH = 3, TempW = 3;
unsigned char*Tgray;
Tgray = (unsigned char*)malloc(sizeof(char)*TempH*TempW);

unsigned char *gray_result;
gray_result = (unsigned char*)malloc(sizeof(char)*H*W);

int i, j, k, l, m, n;
unsigned char g;

for (i = TempH / 2;i < (H - TempH / 2); i )
for (j = TempW / 2; j < (W - TempW / 2); j )
{
for (k = 0; k < TempH; k )
for (l = 0; l < TempW; l )
Tgray[k*TempW 1] = gray[(i - TempH / 2 k)*W (j - TempW / 2 1)];
for (m = 0;m < TempH*TempW - 1; m )
for (n = m;n < TempH*TempW; n )
if (Tgray[m] > Tgray[n])
{
g = Tgray[m];
Tgray[m] = Tgray[n];
Tgray[n] = g;
}
gray_result[i*W j] = Tgray[(TempH*TempW) / 2];
}

m_Result_Img.CreateFromArray(gray_result, W, H, 8, W, 0);

/*FILE*pfile;
fopen_s(&pfile,"E:\\桌面\\图像处理\\数据\\设计1\\test123.raw", "wb");
fwrite(gray_result,1,H*W,pfile);
fclose(fp);
fclose(pfile);*/
}


void C图像处理Doc::OnRhPrewitt()
{
// TODO: 在此添加命令处理程序代码
//将图像中的灰度值读入数组中
//unsigned char *gray;
//gray = (unsigned char *)malloc(sizeof(char) *H*W);
//FILE * fp;
//fopen_s(&fp, "E:\\桌面\\图像处理\\数据\\设计1\\test.raw", "rb");
//fread(gray, sizeof(unsigned char), H*W, fp);
if (!m_Img.IsValid())
{
AfxMessageBox(_T("请先打开图像"));
return;
}
int W = m_Img.GetWidth();
int H = m_Img.GetHeight();
AfxMessageBox(_T("已完成图像priwitt"));
//定义模板
int tw = 3, th = 3;
int temp1[9] = { -1,0,1,-2,0,2,-1,0,1 }, temp2[9] = { -1,-2,-1,0,0,0,1,2,1 };

//定义一些中间变量
int i, j, k, l;

//定义结果图像
unsigned char *gray_result;
gray_result = (unsigned char*)malloc(sizeof(char)*Height*Width);
for (i = 0; i < Height*Width; i )
{
gray_result[i] = 255;
}
for (i = th / 2; i < (H - th / 2); i )
for (j = tw / 2; j < (W - tw / 2); j )
{
//将模板覆在图像上,对应相乘
int counter1 = 0, counter2 = 0, counter = 0;
for (k = 0; k < th; k )
for (l= 0; l < tw; l )
{
counter1 = (gray[W*(i k - th / 2) j l - tw / 2] * temp1[k*tw l]);
counter2 = (gray[W*(i k - th / 2) j l - tw / 2] * temp2[k*tw l]);
}
counter = abs(counter1) abs(counter2);
//通过对模板计算得到的结果与阈值100的比较,大于的为边缘(255),小于的为背景(0)
if (counter > 100)
gray_result[i*W j] = 0;
else
gray_result[i*W j] = 255;
}

m_Result_Img.CreateFromArray(gray_result, W, H, 8, W, 0);

//保存结果图像.
//FILE * pfile;
//fopen_s(&pfile,"E:\\桌面\\图像处理\\数据\\设计1\\test232.raw","wb");
//fwrite(gray_result, 1, H*W, pfile);
//fclose(fp);
//fclose(pfile);
}







void C图像处理Doc::OnRhLaplacian()
{
// TODO: 在此添加命令处理程序代码
//将图像中的灰度值读入数组中
//unsigned char *gray;
//gray = (unsigned char *)malloc(sizeof(char) *H*W);
//FILE * fp;
//fopen_s(&fp, "E:\\桌面\\图像处理\\数据\\设计1\\test.raw", "rb");
//fread(gray, sizeof(unsigned char), H*W, fp);
if (!m_Img.IsValid())
{
AfxMessageBox(_T("请先打开图像"));
return;
}
int W = m_Img.GetWidth();
int H = m_Img.GetHeight();
AfxMessageBox(_T("已完成图像Laplacian"));
//定义模板
int tw = 3, th = 3;
int temp[9] = { 0,1,0,1,-4,1,0,1,0 };

//定义一些中间变量
int i, j, k, l;

//定义结果图像
unsigned char *gray_result;
gray_result = (unsigned char*)malloc(sizeof(char)*Height*Width);
for (i = 0; i < Height*Width; i )
{
gray_result[i] = 255;
}
for (i = th / 2; i < (H - th / 2); i )
for (j = tw / 2; j < (W - tw / 2); j )
{
//将模板覆在图像上,对应相乘
int counter = 0;
for (k = 0; k < th; k )
for (l = 0; l < tw; l )
{
counter = (gray[W*(i k - th / 2) j l - tw / 2] * temp[k*tw l]);
}
counter = abs(counter);
//通过对模板计算得到的结果与阈值100的比较,大于的为边缘(255),小于的为背景(0)
if (counter < 1)
gray_result[i*W j] = 0;
else
gray_result[i*W j] = 255;
}

m_Result_Img.CreateFromArray(gray_result, W, H, 8, W, 0);

//保存结果图像.
//FILE * pfile;
//fopen_s(&pfile,"E:\\桌面\\图像处理\\数据\\设计1\\test232.raw","wb");
//fwrite(gray_result, 1, H*W, pfile);
//fclose(fp);
//fclose(pfile);
}

.
├── MFCApplication1
│   ├── CxImage
│   │   ├── cximagecrtd.dll
│   │   ├── include
│   │   │   ├── stdint.h
│   │   │   ├── xfile.h
│   │   │   ├── ximabmp.h
│   │   │   ├── ximacfg.h
│   │   │   ├── ximadef.h
│   │   │   ├── ximage.h
│   │   │   ├── ximagif.h
│   │   │   ├── ximaico.h
│   │   │   ├── ximaiter.h
│   │   │   ├── ximajas.h
│   │   │   ├── ximajbg.h
│   │   │   ├── ximajpg.h
│   │   │   ├── ximamng.h
│   │   │   ├── ximapcx.h
│   │   │   ├── ximapng.h
│   │   │   ├── ximapsd.h
│   │   │   ├── ximaraw.h
│   │   │   ├── ximaska.h
│   │   │   ├── ximatga.h
│   │   │   ├── ximath.h
│   │   │   ├── ximatif.h
│   │   │   ├── ximawbmp.h
│   │   │   ├── ximawmf.h
│   │   │   ├── xiofile.h
│   │   │   └── xmemfile.h
│   │   └── lib
│   │       ├── debuglib
│   │       │   ├── cximage.lib
│   │       │   ├── jasper.lib
│   │       │   ├── jbig.lib
│   │       │   ├── jpeg.lib
│   │       │   ├── libdcr.lib
│   │       │   ├── libpsd.lib
│   │       │   ├── mng.lib
│   │       │   ├── png.lib
│   │       │   ├── tiff.lib
│   │       │   └── zlib.lib
│   │       └── releaselib
│   │           ├── cximage.lib
│   │           ├── demo.lib
│   │           ├── demodll.lib
│   │           ├── jasper.lib
│   │           ├── jbig.lib
│   │           ├── jpeg.lib
│   │           ├── libdcr.lib
│   │           ├── libpsd.lib
│   │           ├── mng.lib
│   │           ├── png.lib
│   │           ├── tiff.lib
│   │           └── zlib.lib
│   ├── Debug
│   │   ├── MFCApplication1.exe
│   │   ├── MFCApplication1.exp
│   │   ├── MFCApplication1.ilk
│   │   ├── MFCApplication1.lib
│   │   ├── MFCApplication1.pdb
│   │   └── cximagecrtd.dll
│   ├── MFCApplication1
│   │   ├── Debug
│   │   │   ├── MFCApplication1.log
│   │   │   ├── MFCApplication1.obj
│   │   │   ├── MFCApplication1.pch
│   │   │   ├── MFCApplication1.res
│   │   │   ├── MFCApplication1.tlog
│   │   │   │   ├── CL.command.1.tlog
│   │   │   │   ├── CL.read.1.tlog
│   │   │   │   ├── CL.write.1.tlog
│   │   │   │   ├── MFCApplication1.lastbuildstate
│   │   │   │   ├── MFCApplication1.write.1u.tlog
│   │   │   │   ├── link.command.1.tlog
│   │   │   │   ├── link.read.1.tlog
│   │   │   │   ├── link.write.1.tlog
│   │   │   │   ├── rc.command.1.tlog
│   │   │   │   ├── rc.read.1.tlog
│   │   │   │   └── rc.write.1.tlog
│   │   │   ├── MFCApplication1Doc.obj
│   │   │   ├── MFCApplication1View.obj
│   │   │   ├── MainFrm.obj
│   │   │   ├── pch.obj
│   │   │   ├── vc141.idb
│   │   │   └── vc141.pdb
│   │   ├── MFCApplication1.aps
│   │   ├── MFCApplication1.cpp
│   │   ├── MFCApplication1.h
│   │   ├── MFCApplication1.rc
│   │   ├── MFCApplication1.vcxproj
│   │   ├── MFCApplication1.vcxproj.filters
│   │   ├── MFCApplication1.vcxproj.user
│   │   ├── MFCApplication1Doc.cpp
│   │   ├── MFCApplication1Doc.h
│   │   ├── MFCApplication1View.cpp
│   │   ├── MFCApplication1View.h
│   │   ├── MainFrm.cpp
│   │   ├── MainFrm.h
│   │   ├── framework.h
│   │   ├── pch.cpp
│   │   ├── pch.h
│   │   ├── res
│   │   │   ├── MFCApplication1.ico
│   │   │   ├── MFCApplication1.rc2
│   │   │   ├── MFCApplication1Doc.ico
│   │   │   └── Toolbar.bmp
│   │   ├── resource.h
│   │   └── targetver.h
│   ├── MFCApplication1.sln
│   └── 数据
│       ├── 设计1
│       │   ├── blood.bmp
│       │   ├── noise.bmp
│       │   ├── resvvs。raw.bmp
│       │   ├── test.bmp
│       │   ├── test.raw
│       │   ├── test11.raw
│       │   └── test12.raw
│       └── 设计2
│           ├── car.JPG
│           └── 模板
│               ├── 0.jpg
│               ├── 1.jpg
│               ├── 2.jpg
│               ├── 3.jpg
│               ├── 4.jpg
│               ├── 5.jpg
│               ├── 6.jpg
│               ├── 7.jpg
│               ├── 8.jpg
│               ├── 9.jpg
│               ├── A.jpg
│               ├── B.jpg
│               ├── C.jpg
│               ├── D.jpg
│               ├── E.jpg
│               ├── F.jpg
│               ├── G.jpg
│               ├── H.jpg
│               ├── I.jpg
│               ├── J.jpg
│               ├── K.jpg
│               ├── L.jpg
│               ├── M.jpg
│               ├── N.jpg
│               ├── O.jpg
│               ├── P.jpg
│               ├── Q.jpg
│               ├── R.jpg
│               ├── S.jpg
│               ├── T.jpg
│               ├── U.jpg
│               ├── V.jpg
│               ├── W.jpg
│               ├── X.jpg
│               ├── Y.jpg
│               ├── Z.jpg
│               ├── 苏.jpg
│               ├── 豫.jpg
│               ├── 陕.jpg
│               └── 鲁.jpg
└── 好例子网_MFCApplication1-图像处理基础框架及典型算法实现程序设计.zip

15 directories, 147 files


实例下载地址

图像处理基础框架及典型算法实现程序设计

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警