opencv 图像减色
2016-07-13 22:31
274 查看
一利用指针进行图像遍历
二利用迭代器进行遍历
三利用运算符重载
#include <opencv2/highgui.hpp> #include <cmath> //速度最快 void colorReduce(cv::Mat &image,int div) { int nl=image.rows; int nc=image.cols*image.channels(); //利用位运算 int n=log2(div); uchar mask=0xFF<<n; //判断矩阵的连续性 if(image.isContinuous()) { nc*=nl; nl=1; } for(int i=0;i<nl;i++) { uchar* data=image.ptr<uchar>(i); for(int j=0;j<nc;j++) { *data=(*data&mask)+(div>>1); data++; } } }
二利用迭代器进行遍历
#include <opencv2/highgui.hpp> void colorReduce(cv::Mat &image,int div) { //利用每一行迭代器进行遍历 auto it=image.begin<cv::Vec3b>(); auto itend=image.end<cv::Vec3b>(); for(;it<itend;it++) { //适用于三通道图像 (*it)[0]=(*it)[0]/div*div+div/2; (*it)[1]=(*it)[1]/div*div+div/2; (*it)[2]=(*it)[2]/div*div+div/2; } }
三利用运算符重载
#include <opencv2/highgui.hpp> #include <cmath> //实现简单,最为实用 void colorReduce(cv::Mat &image,int div) { //进行位运算 int n=log2(div); uchar mask=0xFF<<n; image=(image&cv::Scalar(mask,mask,mask) +cv::Scalar(div/2,div/2,div/2)); }
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- Android Studio中配置OpenCV库开发环境的教程
- 基于C++实现kinect+opencv 获取深度及彩色数据
- visual studio 2012安装配置方法图文教程 附opencv配置教程
- OpenCV 2.4.3 C++ 平滑处理分析
- Python中使用OpenCV库来进行简单的气象学遥感影像计算
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python环境搭建之OpenCV的步骤方法
- Python+Opencv识别两张相似图片
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- 使用 Java 开发 OpenCV 应用
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- visual studio 2012安装配置方法图文教程 附opencv配置教程