图像处理基本算法
2011-12-12 22:17
549 查看
使用openCV进行图像处理,总感觉并不能真正的理解图像处理的核心内容,因此我感觉对图像处理的理解才是关键。
基本的反色操作,主要是了解OpenCV对图像数据的操作方式:指针
如下:
unsigned char * ptr;//定义指针
for(int i = 0 ;i < img->height;i++){
ptr= (unsigned char*)img->imageData+ i*img->widthStep;//根据偏移获取数据
for(int j = 0 ; j< img->width; j++){
*(ptr+3*j) -= 20;
*(ptr + 3* j+1) -= 20;
*(ptr + 3*j +2) -= 20;
}
}
同时注意对图像真彩和灰度的判定:
image->nChannels == 3 真彩
image->nChannels == 1 灰度
基本的反色操作,主要是了解OpenCV对图像数据的操作方式:指针
如下:
unsigned char * ptr;//定义指针
for(int i = 0 ;i < img->height;i++){
ptr= (unsigned char*)img->imageData+ i*img->widthStep;//根据偏移获取数据
for(int j = 0 ; j< img->width; j++){
*(ptr+3*j) -= 20;
*(ptr + 3* j+1) -= 20;
*(ptr + 3*j +2) -= 20;
}
}
同时注意对图像真彩和灰度的判定:
image->nChannels == 3 真彩
image->nChannels == 1 灰度
#include<cv.h> #include<highgui.h> int main(){ IplImage * image; image = cvLoadImage("E:\\image\\breast.tif",1); cvNamedWindow("image",CV_WINDOW_AUTOSIZE); cvSaveImage("E:\\image\\breast.jpg",image,0); cvShowImage("image",image); cvWaitKey(0); unsigned char * ptr; if(image->nChannels == 3){ for(int i = 0 ; i < image->height;i++){ ptr = (unsigned char *)image->imageData + i*image->widthStep; for(int j = 0; j< image->width;j++){ *(ptr + 3*j) = 255 - (*(ptr +3*j)); *(ptr + 3*j +1) = 255 - (*(ptr +3*j+1)); *(ptr + 3*j+2) = 255 - (*(ptr +3*j+2)); } } } else if(image->nChannels == 1){ for(int i = 0 ; i < image->height;i++){ ptr = (unsigned char *)image->imageData + i*image->widthStep; for(int j = 0; j< image->width;j++){ *(ptr + j) = 255 - (*(ptr +j)); } } } cvShowImage("image",image); cvWaitKey(0); cvSaveImage("E:\\image\\breast2.jpg",image,0); return 0; }
相关文章推荐
- 图像处理-基本算法之对数变换
- 图像基本处理算法的简单实现(一)
- 图像处理基本算法 车牌识别与定位
- 图像处理的基本算法
- 图像处理基本算法 链码 边界跟踪
- 图像处理-基本算法之幂次变换
- 图像处理基本算法
- 图像处理基本算法-卷积和相关
- 图像处理基本算法(整理)
- 图像处理基本算法 形状特征
- 图像基本处理算法的简单实现(一)
- 图像处理基本算法
- 图像处理-基本算法之指数变换
- 图像处理基本算法-卷积和相关
- 图像基本处理算法的简单实现(一)
- 图像处理基本算法(整理)
- 图像基本处理算法的简单实现(一) 推荐
- 图像处理-基本算法之灰度均衡 form(同串口)
- 图像处理基本思想和算法研究
- 数字图像处理基本算法实现(2)--section3.3直方图处理