练习:创建一个大小为100*100的三通道RGB图像。将它的元素全部置0.使用指针算法以(20,5)与(40,20)为顶点绘制一个绿色平面。

参考博文:blog.csdn.net/qq_20777367/article/details/46365191

使用指针算法首先要知道画布的指针,然后取得要修改位置的指针。即img->imageData+top*img->widthStep+left*nchannels+channel.

首先我们要清楚图像色素的存储是以元素为单位的,而元素内有多少个通道,一个元素就有多少个指针。所以每一行的元素数为left,则指针数为left*nchannels

Img->imageData是图像元素的初始位置,由于每一行的指针数为img->widthsteps,所以如果起始点上面的行数为top,一共含有的指针就是top*(img->widthStep)。而起始元素左边的元素数为left,每个元素有nchannels个通道,则一共有left*nchannels个指针。而如果我们要操作的是该元素的第channel个指针,就要再加上channel.

 /*ch4_lx3_4.cpp
添加功能:利用指针画矩形
本程序是learning opencv这本书的课后习题练习
欢迎提出问题一起讨论*/
#include "cv.h"
#include "highgui.h"
int main(int argc,char** argv) { IplImage *img = cvCreateImage(cvSize(, ), IPL_DEPTH_8U, ); cvZero(img); int widthstep = img->widthStep; int left = , width = , top = , height = ; uchar *ptr = (uchar*)(img->imageData+top*widthstep+left*); //指向要操作的指针 for (int j = ; j < height; j++) for (int i = ; i < width; i++) { *(ptr + j*widthstep + i*) = ;//由于每个元素含三个指针,所以需要加i*3才能指向下一个元素的该色素 } cvNamedWindow("img", ); cvShowImage("img", img); cvWaitKey(); return ; }

运行结果如下图

OpenCV学习笔记之课后习题练习3-4的更多相关文章

  1. OpenCV学习笔记之课后习题练习3-5

    OpenCV学习笔记之课后习题练习2-5 练习使用感兴趣区域(ROI).创建一个210*210的单通道图像并将其归0.在图像中使用ROI和cvSet()建立一个增长如金字塔状的数组. 参考博文:www ...

  2. OpenCV学习笔记之课后习题练习2-5

    5.对练习4中的代码进行修改,参考例2-3,给程序加入滚动条,使得用户可以动态调节缩放比例,缩放比例的取值为2-8之间.可以跳过写入磁盘操作,但是必须将变换结果显示在窗口中. 参考博文:blog.cs ...

  3. OpenCV学习笔记之课后习题练习2-3

    3.使用例2-10中的视频捕捉和存储方法,结合例2-5中的doPyrDown()创建一个程序,使其从摄像机读入视频数据并将缩放变换后的彩色图像存入磁盘. 例2-10中所用的方法虽然能正常运行,但却不能 ...

  4. OpenCV学习笔记之课后习题练习3-3

    3.3 创建一个100*100的拥有三个通道的二维字节类型矩阵,将其元素全部置0.通过cvPtr2D函数将指针指向中间通道(绿色),以(20,5)和(40,20)为顶点间画一个绿色的长方形. cvPt ...

  5. OpenCV学习笔记之课后习题练习4-1

    第四章课后练习1 1.本章完整讲述了基本的输入/输出编程以及OpenCV的数据结构.下面的练习是基于前面的知识做一些应用,为后面大程序的实现提供帮助.a.创建一个程序实现以下功能:(1)从视频文件中读 ...

  6. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

  7. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  8. opencv学习笔记(五)镜像对称

    opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...

  9. opencv学习笔记(四)投影

    opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...

随机推荐

  1. RESTEasy maven使用

    添加依赖: <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteas ...

  2. Layui:设置select下拉框自动选中某项

    1.问题:layUI,在做编辑功能有下拉框数据时,需要初始化选中某个值,layUI官网没有相关api,可能我比较笨没找到 2.解决思路:出发点击事件 3.分析dom树结构,出发dl点击事件 方法: v ...

  3. Win10 取消桌面快捷键图标

    新建文本文档 --- 写入如下内容 --- 改名为 .bat 并运行 @echo off color 2 reg delete HKCR\lnkfile /v IsShortcut /f reg de ...

  4. Selenium 动作链

    Selenium 模拟浏览器操作,有一些操作,它们没有特定的执行对象,比如鼠标拖曳.键盘按键等,这些动作用另一种方式来执行,那就是动作链 更多动作链参考官网:https://selenium-pyth ...

  5. 国内CDN加速现状

    什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.是位于网络层与应用层之间的网络应用,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内 ...

  6. Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)

    xampp安装好之后就只有一个默认站点及一个默认nobody的ftp账户,这显然不符合我们平时的需求了,那么下面就来讲一下如何设置并管理多个虚拟主机及ftp账户了,至于xampp的安装不在此讨论范围, ...

  7. Subversion权限详解

    1   背景假设厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式有 ...

  8. free -m 下的含义

    如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看. $ free -mtotal used free shared buffers cachedMem: 1002 ...

  9. .NET 正则表达式使用高级技巧之替换类介绍

    因为.net的基本正则语法和Perl5基本相同,所以基本语法你可以去下载一下M$的JS帮助文档,上面有详细的说明 \d表示什么,{,}表示什么,\[表示什么……,这里我只想提醒大家一点,为了避免和反向 ...

  10. 【错误整理】ora-00054:resource busy and acquire with nowait specified解决方法【转】

    当某个数据库用户在数据库中插入.更新.删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait ...