机器视觉 第三节 OpenCV入门初步

《CSDN 人工智能学习笔记》第一部分 机器视觉 第三节 OpenCV入门初步

  • 图像读取与显示
    • Matlab
    • Python
    • C++
  • 图像高斯平滑
    • Matlab
    • Python
    • C++
  • 图像缩放
    • Matlab
    • Python
    • C++
  • 颜色空间及阈值化
    • Matlab
    • Python
    • C++

声明:本系列博客为本人学习CSDN人工智能课程的学习笔记,仅供学习交流使用。
这里引用百度百科关于OpenCV的描述给大家简单说明一下OpenCV
“OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。”
通过上面的描述,相信大家已经对OpenCV有了简单的认知,下面我将借助Matlab、Python以及C++语言通过图像平滑、图像大小改变以及图像阈值化操作三个方面来开展OpenCV的入门学习。好了,话不多说,开始学习吧。

图像读取与显示

Matlab


Python

import cv2 as cv

# 图片地址指针
imgAddress = r'D:\OpenCV\sources\samples\data\lena.jpg'
# 读取图片
img = cv.imread(imgAddress)
# 显示图片
cv.imshow("Hello,world", img)
# 给定时间内等待用户按键触发
cv.waitKey()
# 关闭所有窗口
cv.destroyAllWindows()

C++

#include "pch.h"
#include "opencv2/opencv.hpp"
#include 

using namespace cv;

int main()
{
	//读取图片地址字符串
	const char *fn = "D:\\OpenCV\\sources\\samples\\data\\lena.jpg";
	//读取图片
	Mat image = imread(fn);
	//显示原始图片
	imshow("Hello,World", image);
	waitKey(0);
}

图像高斯平滑

Matlab


Python

# 利用GaussianBlur函数对原始图像进行高斯滤波
imgGauss = cv.GaussianBlur(img, (5, 5), 0)
# 显示处理后的图像
cv.imshow("Gaussian Blur image", imgGauss)

C++

	//新建高斯图片
	Mat imageGauss;
	//原始图片高斯滤波
	GaussianBlur(image, imageGauss, Size(5, 5), 0);
	//显示高斯滤波后的图片
	imshow("Gaussian filter Image", imageGauss);

图像缩放

Matlab


Python

# 利用resize函数对原始图像进行缩放
imgResize = cv.resize(img, (int(img.shape[1]/2), int(img.shape[0]/2)))
# 显示处理后的图像
cv.imshow("resize image", imgResize)

# 利用pyrDown函数对原始图像进行金字塔缩放
imgPyr = cv.pyrDown(img)
# 显示处理后的图像
cv.imshow("pyrDown image", imgPyr)

C++

	//新建放缩图片
	Mat imageResize,imagePyr;
	//设置缩放后的图片尺寸
	Size imageResizeSize = Size(image.cols / 2, image.rows / 2);
	//对原始图片采用立方差值的方法进行缩放,CV_INTER_LINEAR - 双线性差值 (缺省使用)
	resize(image, imageResize, imageResizeSize,CV_INTER_CUBIC);
	//显示利用resize函数放缩处理后的图片
	imshow("Resize Image", imageResize);
	//利用pyrDown函数进行缩小处理
	pyrDown(image, imagePyr);
	//显示利用pyrDown金字塔压缩处理后的图片
	imshow("Pyr金字塔压缩处理图片", imagePyr);

颜色空间及阈值化

Matlab


Python

# 利用cvtColor函数对原始图像进行色彩变换
imgGray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 利用cvtColor函数获得原始图像的HSV分量图像
imgHSV = cv.cvtColor(img, cv.COLOR_BGR2HSV)
# 显示处理后的图像
cv.imshow("cvtColor image", imgGray)
cv.imshow("Hue", imgHSV[:, :, 0])
cv.imshow("Saturation", imgHSV[:, :, 1])
cv.imshow("Value", imgHSV[:, :, 2])

C++

	//新建色彩转换图像、灰度图像
	Mat imageCVT, imageGray, imageHSV, imageHSVChannels[3];
	//利用cvtColor函数将原始图像转换为灰度图像
	cvtColor(image, imageCVT, COLOR_BGR2GRAY);
	//利用cvtColor函数将原始图像转换为HSV图像
	cvtColor(image, imageHSV, COLOR_BGR2HSV);
	//利用通道分离函数,分离图像
	split(imageHSV, imageHSVChannels);
	//利用threshold函数将灰度图像转换为二值化图像
	threshold(imageCVT, imageGray, 120, 0xff, THRESH_BINARY);
	//显示灰度图像,HSV图像分量和二值化图像
	imshow("gray image", imageCVT);
	imshow("Hue", imageHSVChannels[0]);
	imshow("Saturation", imageHSVChannels[1]);
	imshow("Value", imageHSVChannels[2]);
	imshow("BlackWhite image", imageGray);

你可能感兴趣的:(CSDN人工智能学习笔记)