Opencv之imwrite()函数的用处
2017-03-15 19:06
316 查看
----------------------------------------
实践出真理!!!!!!-------------------------------------------------
【扯淡】
本人在学习Opencv的时候,一直就瞧不上imwrite()函数,为什么呢?慢慢听我道来,一是我保存图片有什么用,我能实现功能就行了啥,不需要保存图片,二是我觉得保存图片没什么用就算了,还尼玛占内存。正当我满眼嫌弃的时候,写着博客突然想了一下,Ubuntu尼玛不好截图的嘛,我指的是单独的效果图,它是把整个屏幕截了,于是我就改了一下代码,加上了一个imwrite()函数,咦,效果不错哦,完美。以后写博客要图片就用这截了。
【盖聂】
【进入正题】
【函数实例】
1、filename:需要写入的文件名,会自己创建(像imwrite("1.jpeg",src);这样)
2、img:要保存的图像
3、params:表示为特定格式保存的参数编码
注意:你要保存图片为哪种格式,就带什么后缀。
【附赠代码】
【保存后的效果图】
实践出真理!!!!!!-------------------------------------------------
【扯淡】
本人在学习Opencv的时候,一直就瞧不上imwrite()函数,为什么呢?慢慢听我道来,一是我保存图片有什么用,我能实现功能就行了啥,不需要保存图片,二是我觉得保存图片没什么用就算了,还尼玛占内存。正当我满眼嫌弃的时候,写着博客突然想了一下,Ubuntu尼玛不好截图的嘛,我指的是单独的效果图,它是把整个屏幕截了,于是我就改了一下代码,加上了一个imwrite()函数,咦,效果不错哦,完美。以后写博客要图片就用这截了。
【盖聂】
【进入正题】
【函数实例】
bool imwrite(const string& filename, InputArray img, const vector<int>& params=vector<int>() )【实例解析】
1、filename:需要写入的文件名,会自己创建(像imwrite("1.jpeg",src);这样)
2、img:要保存的图像
3、params:表示为特定格式保存的参数编码
注意:你要保存图片为哪种格式,就带什么后缀。
【附赠代码】
/*------------------------------------------------程序说明-------------------------------------------- * ----------------------------------------------创建者:磊神------------------------------------------ * ---------------- 4000 -------------------创建时间:2017年3月15日-------------------------------- * ---------------------------开发环境:Opencv2.4.9+Ubuntu14.04-------------------------- * --------------------------------实现功能:鼠标画直线并显示坐标---------------------------- */ #include<opencv2/core/core.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/highgui/highgui.hpp> #include<stdio.h> #include <string> using namespace cv; Mat src; Mat dst; void on_mouse(int event, int x, int y, int flags, void* ustc) { static Point pre_pt ; static Point cur_pt ; char temp_1[20]; // 如果要在图片的任意位置作为起始点,这两步就不需要了 //pre_pt=Point(-1,-1); //cur_pt=Point(-1,-1); if (event == CV_EVENT_LBUTTONDOWN) { dst.copyTo(src); pre_pt = Point(x, y); //sprintf(temp_1,"x:%d,y:%d",x,y); //xiaolei=Rect(x1,y1,0,0); //putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(255,255,255)); circle(src, pre_pt, 0.5, cvScalar(255, 0, 0), CV_FILLED, CV_AA, 0); imshow("src", src); src.copyTo(dst);//确保画线操作是在src上进行 } else if (event == EVENT_MOUSEMOVE && (flags & EVENT_FLAG_LBUTTON)) { dst.copyTo(src); cur_pt = Point(x, y); sprintf(temp_1,"x:%d,y:%d",x,y); //xiaolei=Rect(x1,y1,0,0); putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.5,Scalar(0,255,0)); line(src, pre_pt, cur_pt, cvScalar(0, 255,0), 1, CV_AA, 0); imshow("src", src); } else if (event == CV_EVENT_LBUTTONUP) { dst.copyTo(src); cur_pt = Point(x, y); sprintf(temp_1,"x:%d,y:%d",x,y); //xiaolei=Rect(x1,y1,0,0); putText(src,temp_1,Point(x,y),FONT_HERSHEY_SIMPLEX,0.4,Scalar(255,0,255)); circle(src, cur_pt, 3, cvScalar(255,0, 0), CV_FILLED, CV_AA, 0); line(src, pre_pt, cur_pt, cvScalar(0, 255,0), 1, CV_AA, 0); imshow("src", src); imwrite("1.jpg",src);//加了用来截图 src.copyTo(dst); } } int main() { //注意:这一步必须要有,不然进行不了鼠标操作 namedWindow("src", WINDOW_AUTOSIZE);//WINDOW_AUTOSIZE:系统默认,显示自适应 src = imread("0.jpg", 1);//1:为原图颜色,0:为灰度图,黑白颜色 src.copyTo(dst); setMouseCallback("src", on_mouse, 0); imshow("src", src); waitKey(0); return 0; }
【保存后的效果图】
相关文章推荐
- 基础学习笔记之opencv(24):imwrite函数的使用
- 基础学习笔记之opencv(24):imwrite函数的使用
- 基础学习笔记之opencv(24):imwrite函数的使用
- opencv读取图像的几个基本函数,imread、namedWindow、imshow、imwrite
- OpenCV 3.1 imwrite()函数写入异常问题解决方法
- opencv之imwrite函数使用
- OpenCV中函数imwrite使用
- Opencv输出图像函数-imwrite
- 基础学习笔记之opencv(24):imwrite函数的使用
- 关于opencv的Mat类型的imwrite()函数写入.jpg图像像素值会改变的解决方案
- 基础学习笔记之opencv(24):imwrite函数的使用
- 图像识别与处理之Opencv——图像数据获取与存储(imread()和imwrite()函数)
- 基础学习笔记之opencv(24):imwrite函数的使用
- opencv imwrite()函数 崩溃 失败
- opencv3中的imwrite函数详解
- c++中system()函数的用处(转载)
- OpenCV中与matlab中相对应的函数
- opencv相关的一些函数
- c++中system()函数的用处[转自http://blog.educity.cn/user7/50901/archives/2010/33686.html]
- OpenCV与Matlab函数对照,从Matlab转OpenCV的兄弟们有福了