在计算机视觉中,三维重建是指根据单视图或者多视图的图像重建三维信息的过程
目标检测可以识别一幅图像中的多个物体,定位不同物体的同时贴上相应的类别
目标检测要解决的核心问题是:
conda install numpy
conda install -c menpo opencv
conda install matplotlib
#载入Opencv库
import cv2
#图像读取
img = cv2.imread('sight.jpg')
#图片保存
cv2.imwrite('sight.jpg',img)
#基本显示
from matplotlib import pyplot as plt
plt.imshow(img)
plt.show()
#调整图片大小
img1=cv2.imread('cat.jpg')
plt.figure(figsize=(8,6))
plt.imshow(img)
plt.show()
#设置坐标轴标签
plt.xlabel('x')
plt.ylabel('y')
#显示子图
plt.subplot(121)
plt.imshow(img1)
plt.subplot(122)
plt.imshow(img1)
plt.show()
#设置图标题
plt.title()
#设置坐标轴范围
plt.xlim(0,1200)
plt.ylim(1200,0)
#显示色彩对照表
plt.colorbar()
#显示风格设置
plt.style.use('seaborn-whitegrid')
任何颜色都有红、绿、蓝三原色组成,若某点的颜色为RGB(R,G,B),通过下面几种方法,可将其转换为灰度:
#BGR转为灰度图
cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#RGB转为BGR
cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
#RGB转为HSV
cv2.cvtColor(img,cv2.COLOR_RGB2HSV)
#BGR转为HLS
cv2.cvtColor(img,cv2.COLOR_BGR2HLS)
#BGR转为YCrCb
cv2.cvtColor(img,cv2.COLOR_RGB2YCrCb)
#图像缩放
cv2.resize(img,dsize=(800,600))#将图像缩放为800*600
#图像翻转
cv2.flip(img,flipCode=0)#以x轴为对称轴翻转
cv2.flip(img,flipCode=1)#以y轴为对称轴翻转
cv2.flip(img,flipCode=-1)#以x轴和y轴为对称轴翻转
由于OpenCV读取图片默认使用通道顺序为BGR,因此在通道拆分时的顺序为B,G,R
rgb = cv2.imread("RGB.png")
B,G,R=cv2.split(rgb)
plt.imshow(R)
plt.imshow(G)
plt.imshow(B)
而Matplotlib的默认通道顺序为RGB,因此在重组时画图时按R,G,B的顺序即可
plt.imshow(cv2.merge([R,G,B]))
M=cv2.getRotationMatrix2D(((cols-1)/2.0,(rows-1)/2.0),45,0.75)#旋转中心的位置,顺时针旋转45度,图片比例缩放为原来的0.75
dst=cv2.warpAffine(rgb,M,(cols,rows))#旋转后图片大小不变
plt.imshow(dst)
#彩色图片直方图均衡化
B,G,R = cv2.split(rgb)
R2 = cv2.equalizeHist(R)
G2 = cv2.equalizeHist(G)
B2 = cv2.equalizeHist(B)
plt.imshow(cv2.merge([R2,G2,B2]))
#标识数字图像中亮度变化明显的点
cv2.Canny(image,threshold1,threshold2)#image:像素矩阵,threshold1,threshold2,阈值1和阈值2,用于进一步筛选边缘信息
plt.imshow(cv2.Canny(rgb,100,200))
请按下列要求进行操作:
利用OpenCV对给定的图片做图片旋转,其中旋转中心为图片中心,顺时针旋转45度,图片比例缩放为原来的一半
利用OpenCV对旋转后的图片做图片缩放(缩放参数已给出)
将缩放后的图片的横轴标签和纵轴标签分别设置为’Length与Width,字体大小为15,并为其设置标题Dog,字体大小为20
# 导入必要的库
import cv2
import matplotlib.pyplot as plt
import pandas as pd
# 获取图片尺寸
img=cv2.imread('dog.jpg')
plt.imshow(img)
size = img.shape
cols = size[0]
rows = size[1]
# 创建大小为(10, 10)的图形,返回Figure对象img_new
img_new = plt.figure(figsize = (10, 10))
M = cv2.getRotationMatrix2D(((cols-1)/2.0, (rows-1)/2.0),45, 0.5)
fig = cv2.warpAffine(img, M, (cols, rows))
# 图像缩放
plt.imshow(cv2.cvtColor(cv2.resize(fig, dsize = (1000, 800)), cv2.COLOR_BGR2RGB))
# 设置横轴标签
plt.xlabel("Length",fontsize=15)
# 设置纵轴标签
plt.ylabel("Width",fontsize=15)
# 设置图标题
plt.title("Dog",fontsize=20)
plt.show()
请按下列要求进行操作:
利用OpenCV对给定的彩色图片做直方图均衡化
将均衡化后的图的标题设置为Panda,字体大小为15,并分别取消横轴与纵轴的刻度
import cv2
from matplotlib import pyplot as plt
img=cv2.imread("panda.jpg")
plt.imshow(img)
B,G,R = cv2.split(img)
R2 = cv2.equalizeHist(R)
G2 = cv2.equalizeHist(G)
B2 = cv2.equalizeHist(B)
#plt.axis('off')
plt.xticks([])
plt.yticks([])
plt.title("Panda",fontsize=15)
plt.imshow(cv2.merge([R2,G2,B2]))