怎么访问图像像素

转载 2012年03月25日 16:41:00

(坐标是从0开始的,并且是相对图像原点的位置。图像原点或者是左上角 (img->origin=IPL_ORIGIN_TL) 或者是左下角 (img->origin=IPL_ORIGIN_BL) )

  • 假设有 8-bit 1-通道的图像 I (IplImage* img):
I(x,y) ~ ((uchar*)(img->imageData + img->widthStep*y))[x]
  • 假设有 8-bit 3-通道的图像 I (IplImage* img):
I(x,y)blue ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3]
I(x,y)green ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+1]
I(x,y)red ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+2]
例如,给点 (100,100) 的亮度增加 30 ,那么可以这样做:
CvPoint pt = {100,100};
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+1] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+2] += 30;
或者更高效地:
CvPoint pt = {100,100};
uchar* temp_ptr = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3];
temp_ptr[0] += 30;
temp_ptr[1] += 30;
temp_ptr[2] += 30;
  • 假设有 32-bit 浮点数, 1-通道 图像 I (IplImage* img):
I(x,y) ~ ((float*)(img->imageData + img->widthStep*y))[x]
  • 现在,一般的情况下,假设有 N-通道,类型为 T 的图像:
I(x,y)c ~ ((T*)(img->imageData + img->widthStep*y))[x*N + c]
你可以使用宏 CV_IMAGE_ELEM( image_header, elemtype, y, x_Nc )
I(x,y)c ~ CV_IMAGE_ELEM( img, T, y, x*N + c )

相关文章推荐

多种方法访问图像像素

  • 2016年10月30日 15:05
  • 12.22MB
  • 下载

Opencv访问图像像素的三种方法

一、指针法 给图像的像素赋值,以此来访问图像的像素。 #include #include using namespace std; using namespace cv; int main() ...

opencv OpenCV访问图像像素, 数组元素等方法收集

IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1); CvScalar s; s=cvGet2D(img,i,j); // get ...

OpenCV访问图像像素的方法

因为OpenCV的版本一直在更新,2.2之前的版本(老方法)和2.2之后版本(新方法)访问图像像素的方法有所不同;老的方法可以再新的版本下用,下面分别把两种访问方式的各种方法总结如下:   老方法...

opencv中访问图像像素方式

opencv中图像是存储在Mat类的对象中,Mat称为基本图像容器。图像矩阵的大小取决于图像的大小和所使用的颜色模型,确切的说应该是图像的通道数。对于灰度图像只有一个通道,彩色图像则会有多个通道。对于...

Opencv3编程入门学习笔记(三)之访问图像像素的三种方法

访问图像像素的三种方法:指针访问,迭代器访问,动态地址访问。访问最快的为指针访问,以下算法在几毫秒,但指针访问容易造成内存泄漏;其次为迭代器访问;最后为动态地址访问。...
  • lgh0824
  • lgh0824
  • 2017年04月11日 22:16
  • 212

opencv学习笔记(十四)——图像像素的访问

方法一:使用指针遍历每个像素点:#include using namespace cv;void colorReduce(Mat inputImage, Mat outputImage, int di...

opencv如何访问图像像素并赋值

OpenCV中 width  和 widthStep的区别: width表示图像的每行像素数,widthStep表示存储一行像素需要的字节数。 在OpenCV里边,widthStep必须是...

opencv学习(5)图像像素的访问、颜色通道的分离和融合

代码都是源于毛星云的《opencv3.0编程入门》1、计时函数 getTickCount()和getTickFrequency()函数; getTickCount()函数返回CPU自某个事件...

python OpenCV 图像像素访问 (三)

访问图像像素 #!/usr/bin/env python # encoding: utf-8 import numpy as np import cv2 #像素的访问和访问numpy中nd...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么访问图像像素
举报原因:
原因补充:

(最多只允许输入30个字)