OpenCV 3.2

Chapt3.2 习题解答

原题:设定三通道二维矩阵,size(100,100),初始化为0,画圆。

为了体现 *img 和 mat 的不同,特将 width =30, height = 50;

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
void main()
{
	// 宽度和高度的不同是为了体现 *img 和 mat的不同
	const int width=30;
	const int height=50;
	// 注意: cvSize(width, height)
	IplImage* img=cvCreateImage(cvSize(width,height),8,3);
	cvZero(img);
	// 中心点(15,25)画圆,半径10,红色、线宽1、8连通、0偏移
	cvCircle(img,cvPoint(width/2,height/2),10,CV_RGB(255,0,0),1,8,0);
	cvNamedWindow("img");
	cvShowImage("img",img);
	
	// data数组为 mat矩阵进行初始化 size( 100, 100)* 3中的3表示 3层。
	int data[width*height*3]={0};
	// 注意: ( height, width )
	CvMat mat = cvMat(height,width,CV_8UC3,data);
	// 中心点(15,25)画圆,半径10,绿色、线宽1、8连通、0偏移
	cvCircle(&mat,cvPoint(width/2,height/2),10,CV_RGB(0,255,0),1,8,0);
	cvNamedWindow("mat");
	cvShowImage("mat",&mat);
	cvWaitKey(0);
}

const  int width=30;

const int height=50; 中const 是为了设定data数组大小所需。

CV_RGB(255,0,0)红色;

CV_RGB(0,255,0)绿色;

CV_RGB(0,0,255)蓝色。


运行结果:img: 红色圆圈黑背景; mat:绿色圆圈黑背景。

注意:mat里的数据类型 8UC3,如果用16SC3,则显示图像为灰色,且没有圆圈。

个人分析:opencv调用cvShowImage()时,默认只能正常显示8位无符号数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值