《计算机视觉技术与应用》-----第二章 图像处理基础
《计算机视觉技术与应用》-----第三章 图形用户界面
《计算机视觉技术与应用》-----第四章 图像变换
《计算机视觉技术与应用》-----第五章 边缘和轮廓
《计算机视觉技术与应用》-----第六章 边缘和轮廓
《计算机视觉技术与应用》-----第七章 边缘和轮廓
《计算机视觉技术与应用》----- 重点复盘
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
将模板图像拿到原图去寻找,如果能在原图中找到(如蜜蜂),则用矩形框画出来。
#test7-1.py:单目标匹配
import cv2
import numpy as np
import matplotlib.pyplot as plt
img1=cv2.imread('bee.jpg') #打开输入图像,默认BGR格式
cv2.imshow('original',img1)
temp=cv2.imread('template.jpg') #打开模板图像
cv2.imshow('template',temp)
img1gray=cv2.cvtColor(img1,cv2.COLOR_BGR2GRAY,dstCn=1) #转换为单通道灰度图像 dstCn表示目标图像的通道数
tempgray=cv2.cvtColor(temp,cv2.COLOR_BGR2GRAY,dstCn=1) #转换为单通道灰度图像 dstCn=1表示单通道
h,w=tempgray.shape #获得模板图像的高度和宽度
res=cv2.matchTemplate(img1gray,tempgray,cv2.TM_SQDIFF) #执行匹配 以方差结果为依据进行匹配。完全匹配时结果为0
plt.imshow(res,cmap = 'gray') #以灰度图像格式显示匹配结果 图中颜色越深的位置匹配度越高
plt.title('Matching Result')
plt.axis('off') #关闭两者坐标轴,只有曲线图形 如果是"on"则有坐标轴
plt.show() #显示图像
min_val,max_val,min_loc,max_loc=cv2.minMaxLoc(res) #返回匹配位置 返回的是坐标
top_left = min_loc #最小值为最佳匹配,获得其位置
print(top_left)
print(max_loc)
print(min_val)
print(max_val)
bottom_right = (top_left[0] + w, top_left[1] + h)#获得匹配范围的右下角位置
cv2.rectangle(img1,top_left, bottom_right,(255,0,0), 2)#绘制匹配范围,蓝色边框
cv2.imshow('Detected Range',img1)
cv2.waitKey(0)
#test7-5.py:高斯金字塔向下采样
import cv2
img0=cv2.imread('qizi.jpg')
img1=cv2.pyrDown(img0) #第1次采样
img2=cv2.pyrDown(img1) #第2次采样
cv2.imshow('img0',img0) #显示第0层
cv2.imshow('img1',img1) #显示第1层
cv2.imshow('img2',img2) #显示第2层
print('0层形状:',img0.shape) #输出图像形状
print('1层形状:',img1.shape) #输出图像形状
print('2层形状:',img2.shape) #输出图像形状
cv2.waitKey(0)
#test7-6.py:高斯金字塔向上采样
import cv2
img0=cv2.imread('qizi2.jpg')
img1=cv2.pyrUp(img0) #第1次采样
img2=cv2.pyrUp(img1) #第2次采样
cv2.imshow('img0',img0) #显示第0层
cv2.imshow('img1',img1) #显示第1层
cv2.imshow('img2',img2) #显示第2层
print('0层形状:',img0.shape) #输出图像形状
print('1层形状:',img1.shape) #输出图像形状
print('2层形状:',img2.shape) #输出图像形状
cv2.waitKey(0)
#test7-7.py:拉普拉斯金字塔
import cv2
img0=cv2.imread('qizi.jpg')
img1=cv2.pyrDown(img0) #第1次采样
img2=cv2.pyrDown(img1) #第2次采样
img3=cv2.pyrDown(img2) #第3次采样
imgL0= cv2.subtract( img0,cv2.pyrUp(img1)) #拉普拉斯金字塔第0层 使用cv2.subtract()函数
imgL1= cv2.subtract(img1,cv2.pyrUp(img2) ) #拉普拉斯金字塔第1层
imgL2= cv2.subtract(img2,cv2.pyrUp(img3) ) #拉普拉斯金字塔第2层
cv2.imshow('imgL0',img0) #显示第0层
cv2.imshow('imgL1',img1) #显示第1层
cv2.imshow('imgL2',img2) #显示第2层
cv2.waitKey(0)
图像减法看参考:OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比
import numpy as np
#test7-8.py:应用图像金字塔实现图像融合
import cv2
img1 = cv2.imread('jiang1.jpg')
img2 = cv2.imread('jiang2.jpg')
cv2.imshow('1',img1)
cv2.imshow('2',img2)
#生成图像1的高斯金字塔,向下采样6次
img = img1.copy()
img1Gaus = [img]
for i in range(6):
img = cv2.pyrDown(img)
img1Gaus.append(img)
#生成图像2的高斯金字塔,向下采样6次
img = img2.copy()
img2Gaus = [img]
for i in range(6):
img = cv2.pyrDown(img)
img2Gaus.append(img)
#生成图像1的拉普拉斯金字塔,6层
img1Laps = [img1Gaus[5]]
for i in range(5,0,-1):
img = cv2.pyrUp(img1Gaus[i])
lap = cv2.subtract(img1Gaus[i-1],img) #两个图像大小不同时,做减法会出错
img1Laps.append(lap)
#生成图像2的拉普拉斯金字塔,6层
img2Laps = [img2Gaus[5]]
for i in range(5,0,-1):
img = cv2.pyrUp(img2Gaus[i])
lap = cv2.subtract(img2Gaus[i-1],img)
img2Laps.append(lap)
#拉普拉斯金字塔拼接:图像1每层左半部分与和图像2每层右半部分拼接
imgLaps = []
for la,lb in zip(img1Laps,img2Laps):
rows,cols,dpt = la.shape
ls=la.copy()
ls[:,int(cols/2):]=lb[:,int(cols/2):]
imgLaps.append(ls)
#从拉普拉斯金字塔恢复图像 将拼接后的图像向上采样6次 (分割和融合后的图像结果)
img = imgLaps[0]
for i in range(1,6):
img = cv2.pyrUp(img)
img = cv2.add(img, imgLaps[i])
#图像1原图像的半部分与和图像2原图像的右左半部分直接拼接(做对比,直接拼接的结果)
direct = img1.copy()
direct[:,int(cols/2):]=img2[:,int(cols/2):]
cv2.imshow('Direct',direct) #显示直接拼接结果
cv2.imshow('Pyramid',img) #显示图像金字塔拼接结果
cv2.waitKey(0)
代码如下(示例):
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
该处使用的url网络请求的数据。
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。