基于图像处理程序设计

我现在需要一个用C语言设计的有关图像处理方面的程序,我实习用,这对我来说很有难度,需要高手帮忙下,最好是成型的程序~~有说明就更好了,难度不要太高.只要是和我这题目有关的... 我现在需要一个用C语言设计的有关图像处理方面的程序,我实习用,这对我来说很有难度,需要高手帮忙下,最好是成型的程序~~
有说明就更好了,难度不要太高.
只要是和我这题目有关的程序就行,不限制内容.
展开
 我来答
779457736
2007-11-27 · 超过21用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:75.6万
展开全部
下面程序模拟两个小球动态碰撞过程。
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
int main()
{
int i, gdriver, gmode, size;
void *buf;
gdriver=DETECT;
initgraph(&gdriver, &gmode, "");/*初始化图形驱动*/
setbkcolor(BLUE);/*设置背景为蓝色*/
cleardevice();
setcolor(LIGHTRED);/*设置作图色为洋红*/
setlinestyle(0,0,1);/*设置线型*/
setfillstyle(1, 10); /*设置填充类型*/
circle(100, 200, 30);/*画圆*/
floodfill(100, 200, 12); /*填充*/
size=imagesize(69, 169, 131, 231);
buf=malloc(size);
getimage(69, 169, 131, 231,buf);
putimage(500, 269, buf, COPY_PUT);
for(i=0; i<185; i++){
putimage(70+i, 170, buf, COPY_PUT);
putimage(500-i, 170, buf, COPY_PUT);
}
for(i=0;i<185; i++){
putimage(255-i, 170, buf, COPY_PUT);
putimage(315+i, 170, buf, COPY_PUT);
}
getch();
closegraph();
}
绿知洲
2024-11-13 广告
是一家技术服务和软件销售的专业供应商,主要产品有:流体力学分析软件:FLOW-3D,微电网与分布式发电系统软件:HOMERPRO,环境噪声IMMI软件等... 点击进入详情页
本回答由绿知洲提供
gugu100
2007-11-28 · TA获得超过255个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:416万
展开全部
请在网上找一下《数字图象处理编程入门》这本书的电子版,书中不但详细介绍了数字图像处理的入门知识,而且给出了各种算法的实现代码(用C编写),已经成为了数字图像处理的经典资料,相信对你一定有用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
glassflake
2007-11-27 · TA获得超过712个赞
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
下面是图像做卷积的小程序,可惜不能把整个程序给你,把核心代码给你写出来了,希望对你有帮助。
OOL ImageProcess::ConvoluteDIB(HDIB hDib, KERNEL *lpKernel, int Strength, int nKernelNum)
{
WaitCursorBegin();

HDIB hNewDib = NULL;
// we only convolute 24bpp DIB, so first convert DIB to 24bpp
WORD wBitCount = DIBBitCount(hDib);
if (wBitCount != 24)
hNewDib = ConvertDIBFormat(hDib, 24, NULL);
else
hNewDib = CopyHandle(hDib);

if (! hNewDib)
{
WaitCursorEnd();
return FALSE;
}

// new DIB attributes
WORD wDIBWidth = (WORD)DIBWidth(hNewDib);
WORD wDIBHeight = (WORD)DIBHeight(hNewDib);
WORD wBytesPerLine = (WORD)BytesPerLine(hNewDib);
DWORD dwImageSize = wBytesPerLine * wDIBHeight;

// Allocate and lock memory for filtered image data
HGLOBAL hFilteredBits = GlobalAlloc(GHND, dwImageSize);
if (!hFilteredBits)
{
WaitCursorEnd();
return FALSE;
}
LPBYTE lpDestImage = (LPBYTE)GlobalLock(hFilteredBits);

// get bits address in DIB
LPBYTE lpDIB = (LPBYTE)GlobalLock(hNewDib);
LPBYTE lpDIBits = FindDIBBits(lpDIB);

// convolute...
for (int i=1; i<wDIBHeight-1; i++)
for (int j=1; j<wDIBWidth-1; j++)
{
int red=0, green=0, blue=0;

for (int k=0; k<nKernelNum; ++k)
{
int r=0, g=0, b=0;
DoConvoluteDIB(&r, &g, &b, i, j,
wBytesPerLine, lpDIBits, lpKernel+k);
if (r > red)
red = r;
if (g > green)
green = g;
if (b > blue)
blue = b;
//red += r; green += g; blue += b;
}

// original RGB value in center pixel (j, i)
LONG lOffset= PIXEL_OFFSET(i,j, wBytesPerLine);
BYTE OldB = *(lpDIBits + lOffset++);
BYTE OldG = *(lpDIBits + lOffset++);
BYTE OldR = *(lpDIBits + lOffset);
// When we get here, red, green and blue have the new RGB value.
if (Strength != 10)
{
// Interpolate pixel data
red = OldR + (((red - OldR) * Strength) / 10);
green = OldG + (((green - OldG) * Strength) / 10);
blue = OldB + (((blue - OldB) * Strength) / 10);
}

lOffset= PIXEL_OFFSET(i,j, wBytesPerLine);
*(lpDestImage + lOffset++) = BOUND(blue, 0, 255);
*(lpDestImage + lOffset++) = BOUND(green, 0, 255);
*(lpDestImage + lOffset) = BOUND(red, 0, 255);
}

// a filtered image is available in lpDestImage
// copy it to DIB bits
memcpy(lpDIBits, lpDestImage, dwImageSize);

// cleanup temp buffers
GlobalUnlock(hFilteredBits);
GlobalFree(hFilteredBits);
// GlobalUnlock(hNewDib);

// rebuild hDib
HDIB hTmp = NULL;
if (wBitCount != 24)
hTmp = ConvertDIBFormat(hNewDib, wBitCount, NULL);
else
hTmp = CopyHandle(hNewDib);

DWORD dwSize = GlobalSize(hTmp);
memcpy((LPBYTE)GlobalLock(hDib), (LPBYTE)GlobalLock(hTmp), dwSize);
GlobalUnlock(hTmp);
GlobalFree(hTmp);
GlobalUnlock(hDib);
WaitCursorEnd();

return TRUE;

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式