![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opencv
机械专业的计算机小白
这个作者很懒,什么都没留下…
展开
-
opencv-python(3.4.1.16版本)conda安装
安装opencv原创 2022-09-05 11:29:22 · 2840 阅读 · 0 评论 -
18.opencv 图像变换
1.基本变换——缩放import cv2import numpy as npdog = cv2.imread('./dog.jpeg')cat = cv2.imread('./cat.jpeg')print(dog.shape)print(cat.shape)new_cat = cv2.resize(cat, (499, 360))print(new_cat.shape)cv2.imshow('img', np.hstack((dog, new_cat)))cv2.wait原创 2022-05-25 13:59:23 · 499 阅读 · 0 评论 -
17.opencv 图像的加减乘除与线性运算(融合)
1.图像加法运算import cv2import numpy as npcat = cv2.imread('./cat.jpeg')dog = cv2.imread('./dog.jpeg')读取猫和狗的图片。print(cat.shape)print(dog.shape)输出二者的原创 2022-05-23 17:41:35 · 494 阅读 · 0 评论 -
16.opencv 图像的分割与融合
图像分割b, g, r = cv2.split(img)图像融合img2 = cv2.merge((b, g, r))例子# 图像的分割与融合import cv2import numpy as npimg = np.zeros((200, 200, 3), np.uint8)# 分割通道b, g, r = cv2.split(img)print('b:', b)# 修改一些颜色b[10:100, 10:100] = 255g[10:150, 10: 150]原创 2022-05-23 15:25:00 · 390 阅读 · 0 评论 -
15.opencv:Mat数据结构和ndarray多维数组、深拷贝与浅拷贝
Mat属性是opencv——c++描述图像的方式,在opencv——python中,由于python作为接口语言,将其套壳,故在python中Mat数据对应numpy的ndarray,底层还是Mat。import cv2dog = cv2.imread('./dog.jpeg')cv2.imshow('dog', dog)cv2.waitKey(0)cv2.destroyAllWindows()读取、显示、按任意键退出。import cv2img = cv2.imread..原创 2022-05-23 14:45:16 · 915 阅读 · 0 评论 -
14.opencv: BGR图片改变色彩空间
# 关键API cv2.cvtColorimport cv2def callback(value): passcv2.namedWindow('color', cv2.WINDOW_NORMAL)cv2.resizeWindow('color', 640, 480)# 读取照片, OpenCV读进来的图片默认是BGR的色彩空间.img = cv2.imread('./cat.jpeg')# 定义颜色空间转化列表color_spaces = [ # 所有颜色空间的.原创 2022-05-23 13:40:29 · 385 阅读 · 0 评论 -
10.opencv-python;cv2库;Sobel算子
Sobel算子原理通过卷积的思想,Gx是提取x方向上(左右方向)上的差异,通过给每个像素点加上权重,得到了在左右两边不同时放大差异,左右两边相同时通过正负号抵消使其值为0,其差异与0组合形成的x方向上的轮廓。但是要注意负数问题,负数同样能代表差异大小,但是图像上负数不表现出来,而是在0截断,意味着需要绝对值计算的参与。同理,y方向相同。import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as原创 2022-04-26 12:56:18 · 4005 阅读 · 0 评论 -
11.opencv-python;cv2库;Scharr算子
Scharr算子与Sobel算子相比,卷积核中的权重值更大,意味着能检测到更加细微的边缘。laplacian算子,二阶的微分离散化。import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取lenaimg = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)...原创 2022-04-26 14:41:50 · 165 阅读 · 0 评论 -
12.opencv-python;cv2库;Canny算子
1.图像降噪(高斯滤波),因为Canny算子容易受噪声干扰,所以得找到合适的降噪处理以平滑图像,滤除噪声。2.计算计算图像中每个像素点的梯度强度和方向。应用Sobel算子中的Gx和Gy计算梯度强度,方向通过Gx和Gy反三角函数计算出方向(平面问题:角度)。3.应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。范围内梯度最大的保存下来。4.应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。5.通过抑制孤立的弱边缘最终完成原创 2022-04-26 17:56:30 · 306 阅读 · 0 评论 -
9.opencv-python;cv2库;形态学;MORPH_TOPHAT礼帽与MORPH_BLACKHAT黑帽
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取img=cv2.imread('lena.jpg')img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 图像二值化ret, thresh1 = cv2.threshold(img_gray, 127, 255, .原创 2022-04-26 11:29:13 · 3761 阅读 · 0 评论 -
8.opencv-python;cv2库;形态学;梯度运算=膨胀-腐蚀
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取img=cv2.imread('lena.jpg')img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 图像二值化ret, thresh1 = cv2.threshold(img_gray, 127, 255,..原创 2022-04-25 18:02:22 · 175 阅读 · 0 评论 -
7.opencv-python;cv2库;形态学;开运算、闭运算:图像膨胀与腐蚀交换顺序
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取img=cv2.imread('lena.jpg')img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 图像二值化ret, thresh1 = cv2.threshold(img_gray, 127, 255,..原创 2022-04-25 17:47:27 · 217 阅读 · 0 评论 -
6.opencv-python;cv2库;形态学;图像膨胀
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取img=cv2.imread('lena.jpg')img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) # 图像二值化ret, thresh1 = cv2.threshold(img_gray, 127, 255, .原创 2022-04-25 17:22:22 · 260 阅读 · 0 评论 -
5.opencv-python;cv2库;形态学;图像腐蚀;去毛刺
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取img=cv2.imread('lena.jpg')img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 图像二值化ret, thresh1 = cv2.threshold(img_gray, 127, 255, cv.原创 2022-04-25 17:07:22 · 3371 阅读 · 0 评论 -
4.opencv-python;cv2库;图像平滑;各种滤波
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 原图img = cv2.imread('lenaNoise.png')cv2.imshow('img', img)cv2.waitKey(0)cv2.destroyAllWindows()#均值滤波#卷积核值都为1的卷积运算blur = cv2.blur(im.原创 2022-04-25 16:14:56 · 321 阅读 · 0 评论 -
3.opencv-python;cv2库;二值化
ret, dst = cv2.threshold(src, thresh, maxval, type)ret : 判断二值化是否成功 布尔类 dst : 二值化后输出的图像 src : 输入图像,只能是单通道图像,一般灰度图像 thresh : 设定的阈值 maxval : 如果超过阈值会被设置为maxvam,一般为255(逻辑1),当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值。 type : 二值化操作类型,一共分为五种 - cv2.THRESH_BINARY ...原创 2022-04-25 15:29:43 · 667 阅读 · 0 评论 -
2.opencv-python;cv2库;BGR图片转化为HSV图片
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取,转换img=cv2.imread('cat.jpg')hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)# 打开,停留,关闭cv2.imshow("hsv", hsv)cv2.waitKey(0) cv2.destroyA.原创 2022-04-25 14:49:55 · 816 阅读 · 0 评论 -
1.opencv-python;cv2库;灰度图
import cv2 #opencv读取的格式是BGRimport numpy as npimport matplotlib.pyplot as plt#Matplotlib是RGB%matplotlib inline # 读取工作空间的图片img=cv2.imread('cat.jpg')# BGR→GRAY BGR图像转化为灰度图像img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出灰度图的宽高img_gray.shape(4.原创 2022-04-25 12:10:03 · 2473 阅读 · 0 评论 -
13.opencv 打开摄像头与视频与录制
# 打开摄像头import cv2cv2.namedWindow('video', cv2.WINDOW_NORMAL)cv2.resizeWindow('video', 640, 480)cap = cv2.VideoCapture(0)# 循环读取摄像头每一帧while True: # 读一帧数据,返回标记和这一帧数据。 ret, frame = cap.read() # 判断 if not ret: # 没读到 .原创 2022-04-30 18:17:42 · 3129 阅读 · 0 评论