《学习OpenCV》课后习题解答2

本题详细解答了如何利用OpenCV创建一个100*100的3通道二维字节类型矩阵,并将所有元素初始化为0。接着,通过cvPtr2D函数定位到中间通道,以坐标(20,5)和(40,20)为顶点,画出一个绿色的矩形,重点在于理解cvPtr2D的使用方法。" 120126251,5737595,Unity3D-UGUI实战:使用UGUI构建层级菜单,"['Unity3D', 'c#', 'UGUI', '游戏开发', 'UI设计']

题目:(P104)
创建一个拥有三个通道的二维字节类型矩阵,大小为100*100,并将所有值赋为0。通过函数cvPtr2D将指针指向中间的通道(“绿色”)。以(20,5)与(40,20)为顶点间画一个绿色的长方形。

解答:
(此题的关键在于懂得函数cvPtr2D的用法)

#include "cv.h"  
#include "highgui.h"  

int main(int argc, char** argv) {
    IplImage *img;
    img = cvCreateImage(cvSize(100, 100), IPL_DEPTH_8U, 3);
    cvZero(img);    
    int left = 20, top = 5, right = 40, bottom = 20;//左上方的点(20,5),右下方的点(40,20)
    for (; left <= right; left++)   //从左到右
    {
        *(cvPtr2D(img, left, top, NULL) + 1) = 255; //cvPtr2D指向(left,top)坐标元素的第一个通道R,想要得到G通道需要+1。同时注意这里的“*”的用法。
        *(cvPtr2D(img, left, bottom, NULL) + 1) = 255;

    }
    left = 20;

    for (; top <= bottom; top++)    //从上到下
    {
        *(cvPtr2D(img, left, top, NULL) + 1) = 255;
        *(cvPtr2D(img, right, top, NULL) + 1) = 255;

    }

    cvNamedWindow("rectangle", CV_WINDOW_AUTOSIZE);
    cvShowImage("rectangle", img);
    cvWaitKey(0);

    cvReleaseImage(&img);
    cvDestroyWindow("rectangle");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值