opencv基本图像操作

简介: // Basic_OpenCV_2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include "cv.h" #include "highgui.
// Basic_OpenCV_2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include "cv.h"
#include "highgui.h"

using namespace std;

void SmoothImage(IplImage* image)//平滑函数
{
	cvNamedWindow("Smooth_in");
	cvNamedWindow("Smooth_out");
	cvShowImage("Smooth_in",image);

	IplImage* out = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);
	cvSmooth(image,out,CV_BLUR,32,32);//平滑函数,后面两个参数是窗口大小
	cvShowImage("Smooth_out",out);

	cvReleaseImage(&out);

	cvWaitKey(0);
	cvDestroyAllWindows();
}

void doPyrDown(IplImage* in, int filter = IPL_GAUSSIAN_5x5)//图像缩小为一半
{
	//Best to make sure input image is divisible by two.
	assert(in->width%2 == 0 && in->height%2 == 0);
	IplImage* out = cvCreateImage(cvSize(in->width/2 , in->height/2) , in->depth , in->nChannels);
	cvPyrDown(in , out);

	cvNamedWindow("PyrDown_out");
	cvShowImage("PyrDown_out",out);
	cvReleaseImage(&out);

	cvWaitKey(0);
	cvDestroyAllWindows();
	//return out;


}

void doCanny(IplImage* in , double lowThresh , double highThresh , double aperture)
{
	IplImage* out = cvCreateImage(cvSize(in->width,in->height) , IPL_DEPTH_8U , 1);
	if(in->nChannels != 1)
	{
		//cout<<"error! unsupported format or combination of formats() in unknown function"<<endl;
		//return;//canny only handles gray scale image

		//若不是灰度图,直接转化成灰度图
		IplImage* gray =  cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);  
	    cvCvtColor(in, gray, CV_BGR2GRAY);
		out = gray;
	}
		

	cvCanny(in , out , lowThresh , highThresh , aperture );

	cvNamedWindow("Canny_out");
	cvShowImage("Canny_out",out);
	cvReleaseImage(&out);

	cvWaitKey(0);
	cvDestroyAllWindows();


}

int _tmain(int argc, _TCHAR* argv[])
{
	IplImage* image = cvLoadImage("lena.jpg");
	//SmoothImage(image);
	//doPyrDown(image);
	doCanny(image ,10 , 100 , 3 );



	system("pause");
	return 0;
}


 

相关文章
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
4598 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
379 4
|
存储 计算机视觉
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
本文介绍了使用OpenCV进行图像读取、显示和存储的基本操作,以及如何绘制直线、圆形、矩形和文本等几何图形的方法。
Opencv的基本操作(一)图像的读取显示存储及几何图形的绘制
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
WK
|
编解码 计算机视觉 Python
如何在OpenCV中进行图像转换
在OpenCV中,图像转换涉及颜色空间变换、大小调整及类型转换等操作。常用函数如`cvtColor`可实现BGR到RGB、灰度图或HSV的转换;`resize`则用于调整图像分辨率。此外,通过`astype`或`convertScaleAbs`可改变图像数据类型。对于复杂的几何变换,如仿射或透视变换,则可利用`warpAffine`和`warpPerspective`函数实现。这些技术为图像处理提供了强大的工具。
WK
729 1
|
算法 计算机视觉
【Qt&OpenCV 图像的感兴趣区域ROI】
【Qt&OpenCV 图像的感兴趣区域ROI】
761 1
|
运维 算法 计算机视觉
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
【Qt&OpenCV 图像的模板匹配 matchTemplate/minMaxLoc】
552 1
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
601 0
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
算法 计算机视觉
【Qt&OpenCV 图像边缘检测 Sobel/Laplace/Canny】
【Qt&OpenCV 图像边缘检测 Sobel/Laplace/Canny】
403 0