OpenCV学习笔记-彩色图像取反
2016-09-01 11:50
399 查看
OpenCV 图像取反:将图像变为原来图像的反色。例如,如果一副灰度图像的每个像素值由2^8=256个,假设点(i,j)出像素值为 a,则取反后的像素值为 255-a。
取反公式:
inv(i,j)=L-1-a(i,j) //L表示图像的灰度级
以下是利用OpenCV将彩色图像取反并保存的源代码:
取反公式:
inv(i,j)=L-1-a(i,j) //L表示图像的灰度级
以下是利用OpenCV将彩色图像取反并保存的源代码:
#include <highgui.h> #include <core/core.hpp> #include <cv.h> #include <iostream> using namespace std; int main() { IplImage *img=0,*outImage=0; int height,width,step,channels; uchar *data; img=cvLoadImage("D:\\robot\\Picture_set1\\机器人图片.png"); //由图像路径获得图像,可以修改 if (!img) { cout<<"Could not load image file: "<<endl; exit(0); } /*获取图像相关信息*/ height=img->height; width=img->width; step=img->widthStep; channels=img->nChannels; data=(uchar*)img->imageData; outImage =cvCreateImage(cvSize(width,height),img->depth,channels); cout<<"Processing a "<<height<<"*"<<width<<" image with "<<channels<<"channels"<<endl; const char winName1[]="inputImage"; const char winName2[]="outputImage"; cvNamedWindow(winName1,CV_WINDOW_AUTOSIZE); cvMoveWindow(winName1,100,100); cvNamedWindow(winName2,CV_WINDOW_AUTOSIZE); cvMoveWindow(winName2,400,400); cvShowImage(winName1,img); for (int i=0;i<height;++i) { for (int j=0;j<width;++j) { for (int k=0;k<channels;++k) { data[i*step + j*channels + k]=255-data[i*step + j*channels + k]; //每个通道每个像素取反 } } } outImage=cvCloneImage(img); cvShowImage(winName2,outImage); if (!cvSaveImage("myself.jpg",outImage)) //保存图像 { cerr<<"Save image failed!"<<endl; } cvWaitKey(0); cvReleaseImage(&outImage); cvReleaseImage(&img); return 0; }
相关文章推荐
- OpenCV学习笔记二:灰色图像转换成彩色图像 非CV_GRAY2RGB
- OpenCV学习笔记7_ImageToBGR_彩色图像三通道转化成BGR3幅单通道图像
- OpenCV学习笔记三-用类处理彩色图像
- Python OpenCV学习笔记之:计算彩色图像各通道的直方图及图像区域直方图
- opencv简单的彩色图像灰度化和二值化(学习笔记)
- OpenCv学习笔记(四):使用split函数提取彩色图像的三个通道
- OpenCV 学习笔记(1)安装设置、显示图像
- OpenCV学习笔记-图像分割
- OpenCV学习笔记---- 挨个读取图像文件夹下的所有文件,进行样本训练
- 我的OpenCV学习笔记(三):利用操作像素完成简单的图像处理:加入椒盐噪声、图像翻转、改变对比度、图像锐化
- 我的OpenCV学习笔记(14):用直方图对比完成基于内容的图像检索
- 图像绘制功能【OpenCV学习笔记5】
- OpenCV学习笔记(16)双目测距与三维重建的OpenCV实现问题集锦(一)图像获取与单目定标
- 我的OpenCV学习笔记(五):给图像加上边框
- OpenCV学习笔记(五十一)——imge stitching图像拼接stitching
- 【Matlab图像处理】学习笔记:读取16进制RGB文档转为彩色图片
- 【OpenCV学习笔记5】读取图像中任意点的像素值
- OpenCV学习笔记(7)图像的通道(channels)问题
- Opencv学习笔记-显示图像
- OpenCV学习笔记-图像分割