-
2017-05-28 13:46:16
整理了我所了解的有关OpenCV的学习笔记、原理分析、使用例程等相关的博文。排序不分先后,随机整理的。如果有好的资源,也欢迎介绍和分享。
1:OpenCV学习笔记
作者:CSDN
数量:55篇博文
网址:http://blog.csdn.net/column/details/opencv-manual.html2:部分OpenCV的函数解读和原理解读
作者:梦想腾飞
数量:20篇博文
网址:http://blog.csdn.net/xidianzhimeng/article/category/15938593: OpenCV入门指南
作者: MoreWindows
数量: 13篇博文
网址:http://blog.csdn.net/morewindows/article/category/12917644: OpenCV成长和进阶之路
作者: Ronny的技术成长之路
数量: 12篇博文
网址:http://www.cnblogs.com/ronny/category/366234.html5: OpenCV入门教程
作者: 毛星云(浅墨)的专栏,《OpenCV3编程入门》作者
数量: 18篇博文
网址:http://blog.csdn.net/zhmxy555/article/category/19230216: 基础学习笔记之opencv
作者: tornadomeet
数量: 24篇博文
网址:http://www.cnblogs.com/tornadomeet/tag/opencv/7: OpenCV学习笔记
作者: 邹宇华
数量: 32篇博文
网址:http://blog.csdn.net/chenyusiyuan/article/category/6109838: CVPR|OpenCV|图像检索|视频检索
作者: icvpr
数量: 25篇博文
网址:http://blog.csdn.net/icvpr/article/category/11395249: 学习OpenCV
作者: 小熊不去实验室
数量: 81篇博文
网址:http://blog.csdn.net/sangni007/article/category/110677110: OpenCV
作者: 羽凌寒
数量: 47篇博文
网址:http://blog.csdn.net/u011630458/article/category/277165911: OpenCV入门
作者: reyzal
数量: 7篇博文
网址:http://www.cnblogs.com/Reyzal/default.html?page=112: OpenCV一些例程
作者: 一样菜
数量: 18篇博文
网址:http://www.cnblogs.com/mypsq/category/758268.html13: OpenCV笔记
作者: gettogetto
数量: 10篇博文
网址:http://blog.csdn.net/gettogetto/article/category/598678914:学习OpenCV
作者: Kelvin_Yan
数量:45篇
网址:http://blog.csdn.net/Kelvin_Yan/article/category/254070715: Python-OpenCV 图像与视频处理教程
作者: phperz
数量: 15
网址:http://www.phperz.com/special/106.html16: OpenCV
作者:shiter
数量:55篇博文
网址:http://blog.csdn.net/wangyaninglm/article/category/1653815更多相关内容 -
OpenCV笔记
2012-09-24 18:12:22OpenCV笔记 -
Opencv笔记
2014-07-29 13:52:55学习Opencv时的笔记,与大家分享,不足的地方,大家多多指教。 -
opencv笔记.docx
2021-11-28 16:50:03opencv笔记.docx -
C# Opencv笔记(二)——OpenCvSharp安装与测试
2022-01-09 13:05:20C# Opencv学习_超详细教程(亲自实践)C# Opencv学习_超详细教程(亲自实践)
C# Opencv笔记(二)——OpenCvSharp安装与测试
本文作者Lawrence,位置未经作者允许禁止转载,谢谢!
以下所有内容,均来源于亲自实战和查询相关资料。
文章目录
前言
文本主要介绍OpenCvSharp4如何一步一步安装,并测试验证
一、运行环境
本人运行环境,Windows下,VS2019专业版16.11.5
二、安装步骤
1、打开VS2019,创建工程
选择Windows窗体应用(.NET Framework),如下图所示
2、使用NuGet安装OpenCvSharp
菜单栏->工具->NuGet包管理器->管理解决方案的NuGet程序包
分别安装OpenCvSharp4、OpenCvSharp4.Extensions和OpenCvSharp4.runtime.win三个包,注意当前版本为4.5.5最新版本。当然也可以安装一个包,选择OpenCvSharp4.windows,这个是将OpenCvSharp4和OpenCvSharp4.runtime.win两个包整合到了一起。
注意: OpenCvSharp4安装的依懒项,.Net框架的版本要至少要大于V4.6以上,否则安装可能会不成功。
在菜单栏->项目->最后一个属性,可以更改目标框架的版本,大于4.6以上
满足上述条件后,点击安装,在输出依懒,会看到安装日志,最终显示成功则代表安装成功3、检测OpenCvSharp是否安装成功
在Debug目录下,packages文件夹中为安装的三个库,代表安装成功。
在引用下,多出了红色框柱的这两个库,代表安装成功
三、 OpenCvSharp程序验证测试
使用OpenCvSharp,添加using OpenCvSharp以及OpenCvSharp.Extensions
using OpenCvSharp; using OpenCvSharp.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CvSharpDemo { class Program { static void Main(string[] args) { //创建一张大小为300*300颜色为绿色的三通道彩色图像 Mat img = new Mat(300, 300, MatType.CV_8UC3, new Scalar(0, 255, 0)); //显示图像 Cv2.ImShow("img", img); //延时等待按键按下 Cv2.WaitKey(0); } } }
运行效果图如下,则说明运行成功
总结
本文OpenCvSharp4的安装和简单测试,记录了安装时候踩过的坑,后续所有OpenCv功能测试都是基于此环境下进行实战演练。
后续文章将主要介绍OpenCvSharp的使用,亲自实战,并熟练掌握,有问题欢迎大家评论并联系我 -
OpenCV笔记: 查找轮廓
2019-03-19 01:52:20NULL 博文链接:https://westice.iteye.com/blog/721225 -
opencv笔记
2013-01-20 09:31:06opencv笔记! -
python+OpenCV笔记(一)~(三十八)的全部示例代码及所需的文件
2022-02-11 14:39:12该文件对应于博客:python+OpenCV笔记(一)~(三十八)的全部示例代码及所需的文件,有需要参考的伙伴可下载查看。 2.专栏笔记地址: https://blog.csdn.net/qq_45832961/category_11556929.html -
阿汛的opencv笔记源码.zip
2020-08-10 19:16:43阿汛的opencv学习笔记系列博文的源代码,注释很清晰,可以直接拿来学习OpenCV的基本操作,也可以到我的系列博客中看更加详细的解释,阿汛最近在搞ros的无人机,opencv的笔记发到人脸识别就结束了。这份资料我的想法... -
Opencv笔记之图片的初步处理——平滑处理培训讲学_图像平滑处理
2020-04-30 08:04:46Opencv笔记之图片的初步处理平滑处理 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 关键函数 Smooth 各种方法的图像... -
OpenCV学习笔记总结
2022-03-28 20:35:12本文主要记录学习opencv笔记知识,主要是图像基础操作处理。官方文档推荐: https://github.com/fendouai/OpenCVTutorials OpenCV中文官方文档 学习笔记推荐: 本文参考:【参考黑马のOpencv图像处理学习笔记】...📝官方文档推荐:
https://github.com/fendouai/OpenCVTutorials
🆙学习笔记推荐:
图像处理导图:
Opencv思维导图:
Opencv基础操作中分为两个大部分,分别是图像的基础操作和算数操作
一、图像的基础操作
目标任务:
-
掌握图像的读取和保存方法
-
能够使用OpenCV在图像上绘制几何图形
-
能够访问图像的像素
-
能够获取图像的属性,并进行通道的分离和合并
-
能够实现颜色空间的变换
1 图像的IO操作
1.1 读取图像
cv.imread()
参数:
-
要读取的图像
-
读取方式的标志
-
cv.IMREAD*COLOR:以彩色模式加载图像,任何图像的透明度都将被忽略。这是默认参数。
-
cv.IMREAD*GRAYSCALE:以灰度模式加载图像
-
cv.IMREAD_UNCHANGED:包括alpha通道的加载图像模式。
可以使用1、0或者-1来替代上面三个标志
-
-
参考代码
import numpy as np import cv2 as cv # 以灰度图的形式读取图像 img = cv.imread('messi5.jpg',0)
注意:如果加载的路径有错误,不会报错,会返回一个None值
1.2显示图像
cv.imshow()
参数:
- 显示图像的窗口名称,以字符串类型表示
- 要加载的图像
注意:在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。
参考代码
import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img = cv.imread('1.jpg') # 2 显示图像 # opencv中显示 cv.imshow('image',img) cv.waitKey(0) # matplotlib中展示 plt.imshow(img[:,:,::-1]) plt.show()
1.3 保存图像
cv.imwrite()
参数:
文件名,要保存在哪里
- 要保存的图像
- 参考代码
cv.imwrite('messigray.png',img)
1.4 总结
我们通过加载灰度图像,显示图像,如果按's'并退出则保存图像,或者按ESC键直接退出而不保存。
import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img = cv.imread('1.jpg',1) # 2 显示图像 # 2.1 利用opencv展示图像 cv.imshow('image',img) cv.waitKey(0) # 2.2 在matplotplotlib中展示图像 plt.imshow(img[:,:,::-1]) plt.title(' '), plt.xticks([]), plt.yticks([]) plt.show() # 3 保存图像 cv.imwrite('12.png',img)
2 绘制几何图形
2.1 绘制直线
cv.line(img,start,end,color,thickness)
参数:
- img:要绘制直线的图像
- Start,end: 直线的起点和终点
- color: 线条的颜色
- Thickness: 线条宽度
2.2 绘制圆形
cv.circle(img,centerpoint, r, color, thickness)
参数:
- img:要绘制圆形的图像
- Centerpoint, r: 圆心和半径
- color: 线条的颜色
- Thickness: 线条宽度,为-1时生成闭合图案并填充颜色
2.3 绘制矩形
cv.rectangle(img,leftupper,rightdown,color,thickness)
参数:
- img:要绘制矩形的图像
- Leftupper, rightdown: 矩形的左上角和右下角坐标
- color: 线条的颜色
- Thickness: 线条宽度
2.4 向图像中添加文字
cv.putText(img,text,station, font, fontsize,color,thickness,cv.LINE_AA)
参数:
- img: 图像
- text:要写入的文本数据
- station:文本的放置位置
- font:字体
- Fontsize :字体大小
2.5 效果展示
我们生成一个全黑的图像,然后在里面绘制图像并添加文字
import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 创建一个空白的图像 img = np.zeros((512,512,3), np.uint8) # 2 绘制图形 cv.line(img,(0,0),(511,511),(255,0,0),5) cv.rectangle(img,(384,0),(510,128),(0,255,0),3) cv.circle(img,(447,63), 63, (0,0,255), -1) font = cv.FONT_HERSHEY_SIMPLEX cv.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv.LINE_AA) # 3 图像展示 plt.imshow(img[:,:,::-1]) plt.title(' '), plt.xticks([]), plt.yticks([]) plt.show()
结果:
3 获取并修改图像中的像素点
我们可以通过行和列的坐标值获取该像素点的像素值。对于BGR图像,它返回一个蓝,绿,红值的数组。对于灰度图像,仅返回相应的强度值。使用相同的方法对像素值进行修改。
import numpy as np import cv2 as cv img = cv.imread('1.jpg') # 获取某个像素点的值 px = img[100,100] # 仅获取蓝色通道的强度值 blue = img[100,100,0] # 修改某个位置的像素值 img[100,100] = [255,255,255] cv.imshow('image',img) cv.waitKey(0)
4 获取图像的属性
图像属性包括行数,列数和通道数,图像数据类型,像素数等。
5 图像通道的拆分与合并
有时需要在B,G,R通道图像上单独工作。在这种情况下,需要将BGR图像分割为单个通道。或者在其他情况下,可能需要将这些单独的通道合并到BGR图像。你可以通过以下方式完成。
# 通道拆分 b,g,r = cv.split(img) # 通道合并 img = cv.merge((b,g,r))
6 色彩空间的改变
OpenCV中有150多种颜色空间转换方法。最广泛使用的转换方法有两种,BGR↔Gray和BGR↔HSV。
API:
cv.cvtColor(input_image,flag)
参数:
- input_image: 进行颜色空间转换的图像
- flag: 转换类型
- cv.COLOR_BGR2GRAY : BGR↔Gray
- cv.COLOR_BGR2HSV: BGR→HSV
总结:
-
图像IO操作的API:
cv.imread(): 读取图像
cv.imshow():显示图像
cv.imwrite(): 保存图像
-
在图像上绘制几何图像
cv.line(): 绘制直线
cv.circle(): 绘制圆形
cv.rectangle(): 绘制矩形
cv.putText(): 在图像上添加文字
-
直接使用行列索引获取图像中的像素并进行修改
-
图像的属性
-
拆分通道:cv.split()
通道合并:cv.merge()
-
色彩空间的改变
cv.cvtColor(input_image,flag)
二、算数操作
学习目标
- 了解图像的加法、混合操作
1.图像的加法
你可以使用OpenCV的cv.add()函数把两幅图像相加,或者可以简单地通过numpy操作添加两个图像,如res = img1 + img2。两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值。
注意:OpenCV加法和Numpy加法之间存在差异。OpenCV的加法是饱和操作,而Numpy添加是模运算。
参考以下代码:
>>> x = np.uint8([250]) >>> y = np.uint8([10]) >>> print( cv.add(x,y) ) # 250+10 = 260 => 255 [[255]] >>> print( x+y ) # 250+10 = 260 % 256 = 4 [4]
这种差别在你对两幅图像进行加法时会更加明显。OpenCV 的结果会更好一点。所以我们尽量使用 OpenCV 中的函数。
我们将下面两幅图像:
代码如下:
import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img1 = cv.imread("view.jpg") img2 = cv.imread("rain.jpg") # 2 加法操作 img3 = cv.add(img1,img2) # cv中的加法 img4 = img1+img2 # 直接相加 # 3 图像显示 fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(10,8),dpi=100) axes[0].imshow(img3[:,:,::-1]) axes[0].set_title("cv中的加法") axes[1].imshow(img4[:,:,::-1]) axes[1].set_title("直接相加") plt.show()
结果如下所示:
2.图像的混合
这其实也是加法,但是不同的是两幅图像的权重不同,这就会给人一种混合或者透明的感觉。图像混合的计算公式如下:
g(x) = (1−α)f0(x) + αf1(x)
通过修改 α 的值(0 → 1),可以实现非常炫酷的混合。
现在我们把两幅图混合在一起。第一幅图的权重是0.7,第二幅图的权重是0.3。函数cv2.addWeighted()可以按下面的公式对图片进行混合操作。
dst = α⋅img1 + β⋅img2 + γ
这里γ取为零。
参考以下代码:
import numpy as np import cv2 as cv import matplotlib.pyplot as plt # 1 读取图像 img1 = cv.imread("view.jpg") img2 = cv.imread("rain.jpg") # 2 图像混合 img3 = cv.addWeighted(img1,0.7,img2,0.3,0) # 3 图像显示 plt.figure(figsize=(8,8)) plt.imshow(img3[:,:,::-1]) plt.show()
显示如下:
总结
-
图像加法:将两幅图像加载一起
cv.add()
-
图像的混合:将两幅图像按照不同的比例进行混合
cv.addweight()
注意:这里都要求两幅图像是相同大小的。
本文参考:
-
-
opencv基础教程笔记.pdf
2021-09-30 18:08:15opencv基础教程笔记.pdf -
OpenCV官方教程笔记
2019-04-18 10:19:00OpenCV官方教程笔记, -
C#Opencv笔记(一)——OpenCvSharp库入门介绍
2022-01-09 11:24:04C# Opencv学习_超详细教程(亲自实践)C# Opencv学习_超详细教程(亲自实践)
C# Opencv笔记(一)——OpenCvSharp库入门介绍
本文作者Lawrence,位置未经作者允许禁止转载,谢谢!
@[TOC](文章目录)
以下所有内容,均来源于亲自实战和查询相关资料
前言
文本主要介绍C#图像处理中常用的两个库:OpenCvSharp和EmguCv,二者都是对OpenCv的封装。
一、OpenCvSharp是什么?
OpenCvSharp 是一个OpenCV的.Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,有详细的使用样例供参考。该库采用BSD发行(github上的README列出来的是BSD),对商业应用友好。使用OpenCvSharp,可用C#,VB.NET等语言实现多种流行的图像处理(image processing)与计算机视觉(computer vision)算法。特点:
- OpenCvSharp直接封装了更多的OpenCV方法,尽可能以本机OpenCv C/C++ API样式为原型,降低学习难度。
- OpenCvSharp大部分了继承了IDisposable接口,方便使用using语句块。
- OpenCvSharp不强加面向对象思维,无需采用面向对象的编程风格,可以直接调用原生风格的OpenCV方法。
- OpenCvSharp提供用于从转换Mat为Bitmap(GDI+) 或者WriteableBitmap(WPF)的功能。
- 支持Mono。可以运行于支持Mono的任何平台上(如Linux,BSD,Mac OS X等)。
官方链接如下:
Github链接:https://github.com/shimat/opencvsharp
Release版本链接:https://github.com/shimat/opencvsharp/releases
目前,截止到2021年12月31日,已经更新到4.5.3版本。
二、EmguCv是什么?
EmguCV 是.NET 平台下对OpenCV 图像处理库的封装。也就是OpenCV的.NET 版。它运行在.NET 兼容的编程语言下调用OpenCV的函数,如C#、VB、VC++等,它可以在Visual Studio和Unity上编译,并可以在Linux 、Mac OS、Windows和Android平台上运行。和OpenCvSharp相比,更新维护较慢,用户不友好,强烈推荐大家使用OpenCvSharp。
总结
本文仅仅简单介绍了C#图像处理中常用的一个库:OpenCvSharp
后续文章将主要介绍OpenCvSharp的使用,亲自实战,并熟练掌握,有问题欢迎大家评论并联系我 -
Opencv笔记(一)之vs2015配置opencv4.5.5
2022-01-20 21:22:14配置环境路径,在Path里面追加D:\Opencv\opencv\build\x64\vc14\bin,这是楼主的路径,前面的根据自己的安装路径进行修改即可,可以测试路径配置是否成功 备注:x64文件夹下有vc14和vc15两个两个文件夹,vc14对应的是vs... -
使用OpenCV通过笔记本摄像头拍照
2021-11-19 16:21:43获取静态图像 import cv2 cap = cv2.VideoCapture(0) #设置使用摄像头获取图像 ret,frame = cap.read() cv2.imshow('cap',frame) cv2.waitKey() cv2.destroyAllWindows() ... cv2.imshow('cap',fram -
python+OpenCv笔记(十):高斯滤波
2022-01-06 19:52:04python+OpenCv笔记(十):高斯滤波 -
python+OpenCv笔记(十一):中值滤波
2022-01-07 18:40:13python+OpenCv笔记(十一):中值滤波 -
Opencv笔记(三)
2022-02-13 20:06:16一、如何自创图片 Mat类对象一种的构造函数的输入的参数如下。可以设定图片的长宽,图片的类型如8位的RGB(CV_8SC3)类型的图片。 Mat (int rows, int cols, int type, const Scalar &s) ... -
OpenCV学习笔记
2022-01-22 10:42:50使用C++和opencv进行图像处理 -
python+OpenCv笔记(九):均值滤波
2022-01-05 18:30:10python+OpenCv笔记(九):均值滤波 -
OpenCV笔记整理【pyplot模块】
2022-03-13 15:48:301. 介绍: Matplotlib 是 Python 的绘图库,是一个非常强大的 Python 画图工具,可以绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等等。 Pyplot 是 Matplotlib 的子库,提供了和 MATLAB ...