作者freestylelin (妹妹)
看板Programming
标题[问题] 关於OpenCV
时间Thu Mar 13 21:02:53 2008
※ [本文转录自 C_and_CPP 看板]
作者: freestylelin (妹妹) 看板: C_and_CPP
标题: [问题] 关於OpenCV
时间: Thu Mar 13 18:16:49 2008
最近由於专题老师教我写关於视讯监控的程式
小弟是OpenCV 的新手
下面是我练习图形转灰阶的程式码
游请各位高手帮我解释红色区域所执行的到底是什麽?
/ GrayLevel.cpp : 定义主控台应用程式的进入点。
//
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
void GraylevelImage(IplImage* Image)
{
int i,j,r,g,b,h,w,gray;
h=Image->height;
w=Image->width;
for(i=0;i<h;i++)
{
for(j=0;j<w;j++)
{
r=((uchar*)(Image->imageData + Image->widthStep * i))[j*3+2];
g=((uchar*)(Image->imageData + Image->widthStep * i))[j*3+1];
b=((uchar*)(Image->imageData + Image->widthStep * i))[j*3+0];
gray=(r*76+g*150+b*29)>>8;
((uchar*)(Image->imageData + Image->widthStep * i))[j*3+2]=gray;
((uchar*)(Image->imageData + Image->widthStep * i))[j*3+1]=gray;
((uchar*)(Image->imageData + Image->widthStep * i))[j*3+0]=gray;
}
}
return;
}
int main()
{
IplImage* pImage = cvLoadImage("艾斯.jpg",1);
IplImage* pImage2;
pImage2=cvCreateImage(cvGetSize(pImage),pImage->depth,pImage->nChannels);
cvCopy(pImage,pImage2,NULL);
GraylevelImage(pImage2);
cvSaveImage("test1.jpg",pImage2);
cvNamedWindow("TEST");
cvShowImage("TEST",pImage2);
cvWaitKey();
cvDestroyWindow("TEST");
cvReleaseImage(&pImage2);
return 0;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.88.33
1F:→ gmuooo:Image->ImgageData //图片内容 好像是Bitmap 03/13 20:36
※ 编辑: freestylelin 来自: 220.139.88.33 (03/13 20:59)
※ 编辑: freestylelin 来自: 220.139.88.33 (03/13 21:00)
2F:→ freestylelin:还是有点模糊~~可以再清楚一点吗?抱歉 03/13 21:00
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.139.88.33
※ 编辑: freestylelin 来自: 220.139.88.33 (03/13 21:03)
3F:推 tseng1129:那边指的是RGB的数值 0~255 分别填进218.170.231.179 03/16 10:28
4F:→ tseng1129:去一个32 bits or 24 bits的array218.170.231.179 03/16 10:29
5F:→ tseng1129:而灰阶显示则是只有 0~255 的单一数值218.170.231.179 03/16 10:30
6F:→ tseng1129:所以後面RGB的array变成=>三个都是GRAY218.170.231.179 03/16 10:30