Opencv把图中的较暗的物体变亮
来源:互联网 发布:java switch case if 编辑:程序博客网 时间:2024/06/08 13:19
这个题目是有Opencvchina那个网站里面出的每周一练题目,不知道是否是这样要求:原图如下所示
我处理好之后得出图像如下所示:
代码如下所示:
// 使图中的较暗的物体变亮.cpp : 定义控制台应用程序的入口点。///*=========================================================================名称:使图中的较暗的物体变亮时间:2013.08说明:把图片中所需要暗的东西变量==========================================================================*/#include "stdafx.h"#include "cv.h"#include "highgui.h"#include "cxcore.h"//----------声明函数----------////作用:该函数用来调节亮度int ImageAdjust(IplImage *src,IplImage *dst, double low,double high, //x double bottom,double top, //y double gamma); int main(void) { //-----声明两个图片指针,分别指向加载图片与输出图片-----// IplImage *dst, *src;src = cvLoadImage("./6.jpg",0); dst = cvCreateImage(cvGetSize(src), src->depth, 1);//初始化dst if(!src)//如果图片指针src加载不成功返回值 { printf("Couldn't seem to Open %s, sorry\n"); return -1; } //-----调用调节亮度函数-----// if( ImageAdjust( src, dst, 0, 0.5, 0.5, 1, 1)!=0) return -1; cvThreshold(dst, dst,155, 255, CV_THRESH_BINARY);//二值化//-----闭操作运算-----//cvDilate(dst, dst, NULL, 1);cvErode(dst, dst, NULL, 1);cvSmooth(dst, dst,CV_GAUSSIAN);//高斯滤波cvThreshold(dst, dst,251, 255, CV_THRESH_BINARY);cvDilate(dst, dst, NULL, 1);//------设置局部区域进行膨胀操作------//cvSetImageROI(dst, cvRect(0, 210, 100, 100));cvDilate(dst, dst, NULL, 4);cvResetImageROI(dst); //声明显示图片窗口cvNamedWindow( "src", 1 ); cvNamedWindow( "result", 1 ); //图片显示 cvShowImage( "src", src ); cvShowImage( "result", dst ); cvSaveImage("1.jpg", dst); cvWaitKey(0); //销毁所有窗口与释放内存 cvDestroyWindow("src"); cvDestroyWindow("result"); cvReleaseImage( &src ); cvReleaseImage( &dst ); return 0; } //------------------------------------------------------////函数初始化//------------------------------------------------------//int ImageAdjust(IplImage* src, IplImage* dst, double low, double high, // X方向 double bottom, double top, // Y方向 double gamma ) { double low2 = low*255; double high2 = high*255; double bottom2 = bottom*255; double top2 = top*255; double err_in = high2 - low2; double err_out = top2 - bottom2; int x,y; double val; if(low<0 && low>1 && high <0 && high>1&& bottom<0 && bottom>1 && top<0 && top>1 && low>high) return -1; for( y = 0; y < src->height; y++) { for (x = 0; x < src->width; x++) { val = ((uchar*)(src->imageData + src->widthStep*y))[x]; val=pow((val - low2)/err_in, gamma)*err_out+bottom2; if(val>255) val=255; if(val<0) val=0; // Make sure src is in the range [low,high] ((uchar*)(dst->imageData + dst->widthStep*y))[x] = (uchar) val; } } return 0; }
- Opencv把图中的较暗的物体变亮
- opencv 使较暗的物体变亮
- opencv使图片变亮
- 基于opencv的物体定位
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- OpenCV中的HOG+SVM物体分类
- Poj 3691 & Hdu 2457 DNA repair (AC自动机+DP)
- Cassandra数据模型设计最佳实践(上部)
- 从南极之争谈软件架构十个技巧,及成功团队具备的气质
- Android ViewTreeObserver简介
- hdu 4597 Play Game(区间dp)
- Opencv把图中的较暗的物体变亮
- GIS解决方案(1):geoserver+openlayers+mysql设计思想
- Fragments (官方文档中文版)
- Eclipse使用经验
- myeclipse10 安装freemaker插件
- Unity 3D 学习笔记
- input子系统(一)
- Oracle 中用 imp 和 exp 命令导入导出数据库(附问题及解决办法)
- 内容监听者