CvScalar

CvScalar定义可存放1—4个数值的数值,其结构如下。

typedef struct CvScalar
{
    double val[4];
}
CvScalar;

------------------------------------------------

CvScalar pt;

如果使用的图像是1通道的,则pt.val[0]中存储数据

如果使用的图像是3通道的,则pt.val[0],pt.val[1],pt.val[2]中存储数据

==============================

cvGet2D 获得某个点的值, idx0=hight 行值, idx1=width 列值。
CVAPI(CvScalar) cvGet2D( const CvArr* arr, int idx0, int idx1 );
 -----------------------------------------------
cvSet2D 给某个点赋值。
CVAPI(void) cvSet2D( CvArr* arr, int idx0, int idx1, CvScalar value );
 -----------------------------------------------
由上可见,cvGet2D的返回类型和cvSet2D中value的类型都是CvScalar,这样定义一个CvScalar变量再调用函数就OK了。

【补充】:

CvScalar s = cvSum(arr);
s.val[0]:数组arr中的B通道值的和,double类型
s.val[1]:数组arr中的G通道值的和,double类型
s.val[2]:数组arr中的R通道值的和,double类型
s.val[3]:数组arr中的alphe通道值的和,double类型

  1. for (int i=0; i<src->height; i++)
  2. {
  3. for (int j=0; j<src->width; j++)
  4. {
  5. CvScalar color=cvGet2D(src, i, j);
  6. cvSet2D(res, i, N-j-1, color);//注意这里
  7. }
  8. }
时间: 2024-12-17 12:02:32

CvScalar的相关文章

【转】 聚类算法-Kmeans算法的简单实现

1. 聚类与分类的区别: 首先要来了解的一个概念就是聚类,简单地说就是把相似的东西分到一组,同 Classification (分类)不同,对于一个 classifier ,通常需要你告诉它"这个东西被分为某某类"这样一些例子,理想情况下,一个 classifier 会从它得到的训练集中进行"学习",从而具备对未知数据进行分类的能力,这种提供训练数据的过程通常叫做 supervised learning (监督学习),而在聚类的时候,我们并不关心某一类是什么,我们需

Kinect2入门+opencv画骨架+骨架数据

////////////////////////////准备工作/////////////////////////////// 首先需要下载安装Kinect2的SDK,下载地址如下: https://www.microsoft.com/en-us/download/details.aspx?id=44561 建议安装时从官网下载,之前有出现过拷贝的文件无法正常安装的情况. //注意V2.0以下版本为一代Kinect所用,一代Kinect推荐V1.8 相对于一代的Kinect,二代由于SDK只出过

图片模糊度判断程序(C++、opencv)

//#include<opencv2\opencv.hpp> //using namespace cv; #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include "cv.h" using namespace

使用OpenCV滑动条写成的简单调色器,实时输出RGB值

好久没有写博客了,最近在看OpenCV,于是动手写了个简单的RGB调色器,在终端实时输出RGB的值.通过这个程序学习滑动条的使用.程序中主要用到cvCreateTrackbar ,其用法如下: cvCreateTrackbar 创建trackbar并将它添加到指定的窗口. CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); int cvCreateTrackbar( const char* trackbar_name, cons

OpenCv_Image与光流法中设置ROI区域

无论是在图片显示中或者是在光流法寻找角点的过程中,我们都会遇到ROI这个东西.它的作用就是让我们能够专注于图像或者当前视频帧中的某一块区域(我们称之为感兴趣区域) 进行处理,而不是对整个图像或者是整个视频帧进行处理,这不仅能够排除掉一些不必要的误差干扰,还能减少运算量.接下来分别说明来图像和光流法视频中如何设置ROI. 图像设置ROI 代码如下: /* * Description : setting ROI in image * Author : Liulongpo * Date : 2015年

ROI的使用与批量存储

1. ROI简介 ROI(Region of Interest)是指图像中的一个矩形区域,可能你后续的程序需要单独处理这一个小区域,如图所示: 图1 ROI的解释 ROI在实际工作中有很重要的作用,在很多情况下,使用它们会提高计算机视觉代码的执行速度.这是因为它们允许对图像的某一小部分进行操作,而不是对整个图像进行运算.在OpenCV中,所有的对图像操作的函数都支持ROI,如果你想打开ROI,可以使用函数cvSetImageROI(),并给函数传递一个矩形子窗口.而cvResetImageROI

《学习opencv》笔记——关于一些画图的函数

画图函数 (1)直线cvLine函数 其结构 void cvLine(//画直线 CvArr* array,//画布图像 CvPoint pt1,//起始点 CvPoint pt2,//终点 CvScalar color,//颜色 int thickness = 1,//宽度 int connectivity = 8//反走样 ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> int main

Openv2.1基本数据类型

1.Point_ template<typename _Tp> class Point_ {_Tp x, y;} 可使用的运算: pt1 = pt2 + pt3; pt1 = pt2 - pt3; pt1 = pt2 * a; pt1 = a * pt2; pt1 += pt2; pt1 -= pt2; pt1 *= a; double value = norm(pt); // L2 norm pt1 == pt2; pt1 != pt2; 预定义: typedef Point_<int

Halcon编程-基于纹理的mara检测

表面瑕疵检测是机器视觉领域非常重要的一个应用.机器视觉是集光学.机电和计算机三个领域的一门不算新的技术.但目前表面瑕疵检测在学界主要是计算机专业或者控制专业瞄准图像处理方向在做,而视觉光学系统这一块主要是光学工程专业在做.很少有研究者把这三块都结合的很好,而国内做这机器视觉(注意是机器视觉 不是计算机视觉)基本上都是小公司. 软件这一块就不说了,国内的整体软件环境不好.据我所知,日本.德国和美国在机器视觉方面有很多相对成熟的软件.中国农业大学的陈兵旗教授在留日期间弄过很多机器视觉方面的农业机器人