opencv - 在单通道图像上画图

本文探讨如何在单通道图像上进行绘图操作。尽管通常CV_RGB(255, 255, 255)用于3通道图像,但实验表明它在单通道图像中也能工作,不过其行为可能不完全符合预期。为正确在单通道图像上绘图,转换为3通道图像是一种常见方法,这里提供了一个实例。" 130786920,11283024,使用遗传算法解决多旅行商问题:MATLAB实现,"['遗传算法', '路径规划', 'MATLAB编程', '优化问题', '旅行商']
摘要由CSDN通过智能技术生成

单通道图像上画图,按理说 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",
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值