pgray = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);
cvCvtColor(pFrame, pgray, CV_BGR2GRAY);
pgray->origin=1; pFrame指向原始彩色图像。为什么先定义了8位深的图像空间,然后再cvCvtColor,怎么转换后得到的图像还是24位深?这样不会溢出?(因为先之定义了8位的图像)
cvCvtColor(pFrame, pgray, CV_BGR2GRAY);
pgray->origin=1; pFrame指向原始彩色图像。为什么先定义了8位深的图像空间,然后再cvCvtColor,怎么转换后得到的图像还是24位深?这样不会溢出?(因为先之定义了8位的图像)
解决方案 »
- 急死了。。关于自绘CListBox与 WM_DRAWITEM
- win32 api 如何读一个((不超过2G)文件,一次读一个固定长度,循环读取直到文件结束。
- 大家来讨论TCP能否实现P2P穿透NAT进入内网?
- 关于一个API函数的问题:请大家帮帮忙!
- 如何让创建的控制台窗口执行结束后还能停留在桌面上
- VC如果要完成类似于 .net framework的 command.ExecuteScalar() 功能的话该如何实现?
- ie插件
- 如何在单文档中加入对话框?
- 在线等待为什么在dll里用DialogBox函数的对话框显示不出来
- 谁有MPEG-LAYER3的详细资料或连接?
- 为什么把字体用ctrl+c拷贝出来//字体名字都变了?
- vs2010 ribbon里怎么使项管理器中的项进行消息响应啊?
IplImage *result = NULL;
result = cvCreateImage(size, IPL_DEPTH_8U, 1);//这才分配数据空间
for (int i=0; i<size.height; i++) {
for (int j=0; j<size.width; j++) {
cvSet(result, CV_RGB(255,255,255), NULL);
}
}这也是先分配一个八位深的图像空间,然后再初始化图像像素值,但是初始化怎么要对3个通道 CV_RGB(255,255,255) 进行初始化而不是一个通道?
八位深的图像不是一个通道吗?
LZ对图像的基础知识得再学习.
我的意思是我定义了八位深(cvCreateImage)单通道(1)的图像。
为什么后来得到的却是3通道的图像?因为定义cvCreateImage(size, IPL_DEPTH_8U, 1) 这儿1就表示单通道了。
IplImage *result = NULL;
result = cvCreateImage(size, IPL_DEPTH_8U, 1);//这才分配数据空间
for (int i=0; i<size.height; i++) {
for (int j=0; j<size.width; j++) {
cvSet(result, CV_RGB(255,255,255), NULL);
}
}