openCV学习1-载入、存储图片+矩阵掩膜+Mat对象

为了搞定图像校正的demo,开始学习opencv。用的是opencv 3.0.0 beta + vs2010,学习的是视频教程(51CTO学院),记录一下学习的东西,希望期末前可以搞定这个demo!0V0

1.首先是图片的载入,修改和储存。我在源代码文件夹里放了一张卡通牛奶图片:milk.jpg

openCV学习1-载入、存储图片+矩阵掩膜+Mat对象_第1张图片←对,就是它!

#include   
#include   
#include   
#include   
#include   
#include 
#include
#include
#include
#include

using namespace std;
using namespace cv;

int main()
{
	Mat src = imread("milk.jpg");
	//1.第二个参数放IMREAD_GRAYSCALE,是灰度图片
	if(src.empty())
	{
		cout<<"!!!"<

2.矩阵掩膜

这个可以提高图像的对比度,牛奶的色彩不够多,换个五彩的图片(嘤)试试。

openCV学习1-载入、存储图片+矩阵掩膜+Mat对象_第2张图片


↑这是公式

以下注释的一段为矩阵掩膜的手动实现,可以用底下的filter2D直接实现,通过计时得出只需要0.01,特别快!

/*矩阵掩膜提高对比度*/
#include   
#include   
#include   
#include   
#include   
#include 
#include
#include
#include
#include

using namespace std;
using namespace cv;

int main()
{
	Mat src,dst;
	src=imread("ying.jpg");
	if(!src.data)
	{
		cout<<"!"<(i);
		const uchar* pre=src.ptr(i-1);
		const uchar* next=src.ptr(i+1);
		uchar* out=dst.ptr(i);
		for(int j=st;j(cur[j]*5-(cur[j-st]+cur[j+st]+pre[j]+next[j]));
			//saturate_cast让后面像素在0~255之间
		}
	}
	*/
	
	double t=(double)getTickCount();//计时

	Mat kernel=(Mat_(3,3)<<0,-1,0,-1,5,-1,0,-1,0);
	filter2D(src,dst,src.depth(),kernel);

	double timec=(double)(getTickCount()-t)/getTickFrequency();
	cout<<"time emmmm: "<

3.Mat对象

探索Mat玩法~

#include   
#include   
#include   
#include   
#include   
#include 
#include
#include
#include
#include

using namespace std;
using namespace cv;

int main()
{
	Mat src;
	src=imread("milk.jpg");
	if(src.empty())
	{
		cout<<"!!!"<1
	int cols=dst.cols;
	int rows=dst.rows;
	cout<<"row: "<(0);
	int ans=*firstRow;
	cout<<"1st pixel value is "<

你可能感兴趣的:(openCV)