Opencv学习:回到原点!关于一些基础的函数
opencv简单的图片读取和显示
1、图像读取
Mat img = imread("C:/clip.png", 1);
imshow("fang2", img);
waitKey(0);
图象显示出来是这样
2、读取图片写入
Mat img = imread("C:/clip.png", 1); imwrite("C:/clipcopy.jpg",img); waitKey(0);
实验好像失败了,在指定位置好像没有显示图片。考虑到C盘有权限保护,现在把文件写入到E盘
imwrite("E:/clipcopy.png", img);
成功写入,图片如下
3、图象保存成不同的质量
Mat img = imread("C:/clip.png", 1); vector<int> compression_params; compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); compression_params.push_back(100); cv::imwrite("outImage.jpg", img, compression_params); imwrite("E:/clipcopy.png", img); imshow("sbsb", imread("E:/clipcopy.png")); waitKey(0); return 0;
这里有个坑,别忘了定义CV_IMWRITE_JPEG_QUALITY:
#define CV_IMWRITE_JPEG_QUALITY 1
3、像素操作
有位老朋友回来了!猜猜他是谁?
对了,就是你们最爱的野兽先辈!
先上处理结果:
即使剩下了半边脸还是能一眼分辨得出野兽先辈的英姿
看见那个白色的线没有?那正是野兽先辈的光荣战果,永远的刻印在了图片上!
分割图像后对像素点进行选定处理。
Mat img = imread("C:/echou.jpg"); Rect rect(0, 0, 200, 200);//分割图像 Mat echo = img(rect); for (int i=1;i<echo.rows/2;i++) { Vec3b *pixel=echo.ptr<Vec3b>(i); //指定第100行,对1-echo.rows列处理变成白色 pixel[100][0]=255; pixel[100][1]=255; pixel[100][2]=255; } imshow("彩色图的像素被操作",echo); waitKey(0);
这是像素处理得到的结果。
我还是纯洁的白色吧?