clq
浏览(0) +
2010-08-11 13:04:44 发表
编辑
关键字:
基本上来自 http://www.opencv.org.cn/index.php/OpenCV_%E7%BC%96%E7%A8%8B%E7%AE%80%E4%BB%8B%EF%BC%88%E7%9F%A9%E9%98%B5/%E5%9B%BE%E5%83%8F/%E8%A7%86%E9%A2%91%E7%9A%84%E5%9F%BA%E6%9C%AC%E8%AF%BB%E5%86%99%E6%93%8D%E4%BD%9C%EF%BC%89#.EF.BC.881.EF.BC.89____.E5.81.87.E8.AE.BE.E4.BD.A0.E8.A6.81.E8.AE.BF.E9.97.AE.E7.AC.ACk.E9.80.9A.E9.81.93.E3.80.81.E7.AC.ACi.E8.A1.8C.E3.80.81.E7.AC.ACj.E5.88.97.E7.9A.84.E5.83.8F.E7.B4.A0.E3.80.82
其实这个是可以写成通用的.但人家开源的xx就是这个样子,方便想方便吗? 好吧,你可以想.
void ImageData(IplImage *image, HDC hdc)
{
//return;
hdc = GetDC(0);
// TextOutA(GetDC(0), 0, 0, "aaa", 3);
//FillRect(hdc, &rectSrc, (HBRUSH)(COLOR_WINDOW + 1));
image->width;//图像宽度?
image->height;//图像高度?
image->depth;//=IPL_DEPTH_8U
//IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
//IplImage* img = cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);
int height = image->height;
int width = image->width;
int step = image->widthStep/sizeof(uchar);
int channels = image->nChannels;//=3 BGR 模式
uchar* data = (uchar *)image->imageData;
//data[i*step+j] = 111;
for(int i = 0; i < height; i++)
{
for(int j = 0; j < width; j++)
{
//printf("(%d, %d)=%d\t", i, j, data[i+j*step]);
//char *ptr = (char *)&(data[i+j*step]);
//SetPixel(hdc, i, j, RGB( ptr[2], ptr[1], ptr[0]));
char *ptr = (char *)&(data[i*step+j*channels]);
//其实通用的应该是 char *ptr = (char *)&(data[i*step+j*channels*一个颜色占用的字节数]);//对于 IPL_DEPTH_8U 就是 1 了即8位一个字节
//char *ptr = &CV_IMAGE_ELEM(image,char,i,j);//CV_IMAGE_ELEM 好象非常的不准确
SetPixel(hdc, j, i, RGB(ptr[2], ptr[1], ptr[0]));
}
}
//取得i行,j列像素的指针
//char *ptr = &CV_IMAGE_ELEM(image,char,i,j*3);
//ptr[0]就是B,ptr[1]就是G,ptr[2]就是R
//data[i*step+j*channels+k] = 111;
}
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.