单通道图像上画图,按理说 CV_RGB(255, 255, 255) 不对撒,可是实验发现,貌似可以,并且也不仅仅是取得第一个分量的值。
but,应该如何在单通道图像画图呢?
当然,最先想到的是,转变成3通道的图像呗:
一个例子:
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int _tmain(int argc, _TCHAR* argv[])
{
IplImage *img = cvLoadImage("C:\\Lena.bmp",0); //单通道方式载入一幅图像
printf("img's depth = %d, nchanels = %d\n", img->depth, img->nChannels);
cvCircle(img, cvPoint(10, 10), 10, CV_RGB(0, 255, 255), 1, 8, 0); //灰色的
IplImage *img_3 = cvCreateImage(cvGetSize(img), 8, 3); //创建3通道图像
cvCvtColor(img, img_3, CV_GRAY2BGR);//单通道转3通道
cvCircle(img_3, cvPoint(10, 10), 10, CV_RGB(255, 0, 0), 1, 8, 0); //红色的圈圈
cvNamedWindow("img", 1);
cvNamedWindow("img_3", 1);
cvShowImage("img",