((uchar*)(Img1->imageData + Img1->widthStep*pt.y))[pt.x] 的 具体含义

widthstep是指图像每行所占的字节数。
主要要和width区别:    width是表示图像的每行像素数,widthStep指表示存储一行像素需要的字节数。    在OpenCV里边,widthStep必须是4的倍数,从而实现字节对齐,有利于提高运算速度。    如果8U单通道图像宽度为3,那么widthStep是4,加一个字节补齐。这个图像的一行需要4个字节,    只使用前3个,最后一个空着。也就是一个宽3高3的图像的imageData数据大小为4*3=12字节。

imagedata是指向存储图像像素值数组的指针,内容是这个数组的首地址,pt.y指的是像素点的行坐标,所以Img->imageData + Img->widthStep*pt.y便是该像素点所在行的首地址,然后再加上该像素点所在的列,即pt.x,就得到了该像素点的地址,所以你的那句代码也可以写成((uchar*)(Img1->imageData + Img1->widthStep*pt.y+pt.x)),都是指该像素点的像素值
时间: 2024-11-01 14:03:02

((uchar*)(Img1->imageData + Img1->widthStep*pt.y))[pt.x] 的 具体含义的相关文章

什么是PT,PT和BT有什么不同?

答:PT(Private Tracker)下载其实也是Bt下载的一种,但有两个明显的改进:一是私密的小范围下载,二是进行流量统计,根据上载量决定你的权限. BT下载时,软件会分析.torrent种子文件得到Tracker地址,然后连接Tracker服务器,服务器返回其他下载者的IP,下载者再与这些IP联系进行下载,从而减轻了服务器的负担,BT下载的Tracker是公开的,而Private Tracker 下载(PT下载)的Tracker则是私有的,每个人的Tracker是不同的,即passkey

远控项目(Windows Socket)

实现内容(屏幕,鼠标,键盘实时控制) 控制端: 1 #pragma once 2 3 #ifndef keybd_H 4 #define keybd_H 5 6 #include <stdio.h> 7 #include <stdlib.h> 8 9 int KeyBD(int tch) { 10 if (tch > 64 && tch < 91) { 11 return tch;//A~Z大写 12 } 13 if (tch > 47 &

hog源码分析

http://www.cnblogs.com/tornadomeet/archive/2012/08/15/2640754.html 在博客目标检测学习_1(用opencv自带hog实现行人检测) 中已经使用了opencv自带的函数detectMultiScale()实现了对行人的检测,当然了,该算法采用的是hog算法,那么hog算法是怎样实现的呢?这一节就来简单分析一下opencv中自带 hog源码. 网上也有不少网友对opencv中的hog源码进行了分析,很不错,看了很有收获.比如: htt

剖析 OpenCV (一) Point 类

OpenCV 的 type.hpp 头文件里包含了基本的数据类型,它们都是以类的形式定义的,例如 Complex,Point 等. 下面简单剖析 Point 的源代码,并借此学习 C++ 的一些基础知识. 1  template class Point_ 1.1  模板类定义 /* 1) template<typename _Tp> * - specify that a template is being declared and a type argument _Tp will be use

Opencv 各种特征点提取和匹配

opencv 特征点的提取和匹配 1. 当中的数据结构 KeyPoint这数据结构中有如下数据结构: class KeyPoint { Point2f pt; //坐标 float size; //特征点邻域直径 float angle; //特征点的方向,值为[零,三百六十),负值表示不使用 float response; int octave; //特征点所在的图像金字塔的组 int class_id; //用于聚类的id angle:角度,表示关键点的方向,SIFT算法通过对关键点周围邻域

OpenCV Mat&amp;Operations

/*M/////////////////////////////////////////////////////////////////////////////////////////// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.//// By downloading, copying, installing or using the software you agree to this license./

conky-lua

--经过数天的查阅网上的资料(资料各种坑啊,一系列问题!),终于让他在linux-mint17 cinnamon工作了 网络上的资料问题: getting "llua_do_call: funcction conky_clock_rings execution failed: attempt to call a nil value" 这个问题是普遍出现, 很多指向的是lua文件的value是了nil值 解决办法: 打开这个lua文件,跳到conky_clock_rongs函数 即可发现

自绘LISTVIEW的滚动条(Delphi实现)

因项目需要准备对LISTVIEW的滚动条进行自绘.于是在网上搜了一下,问题没解决,却搜出一篇令人不愉快的帖子 .确实,那时候实力是不够的,但现在应该是没问题了,为这个目的才不断磨练自己的. LISTVIEW控件的滚动条是系统自带的,它不创建窗口.对LISTVIEW窗口本身进行子类化后,要处理一些跟滚动条有关的消息. 首先是要骗过WM_NCPAINT消息.这个十分容易.WM_NCPAINT消息的wParam是一个区域的句柄.当它不为1时,从它里面CLIP 掉滚动条的区域,再传给原窗口过程即可.当它

【转载】图说C++对象模型:对象内存布局详解

原文: 图说C++对象模型:对象内存布局详解 正文 回到顶部 0.前言 文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局.虚表指针.虚基类指针等有深入了解的朋友可以慢慢看.本文的结论都在VS2013上得到验证.不同的编译器在内存布局的细节上可能有所不同.文章如果有解释不清.解释不通或疏漏的地方,恳请指出. 回到顶部 1.何为C++对象模型? 引用<深度探索C++对象模型>这本书中的话: 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分. 对于各种支持的底层