计算机视觉笔记11.26

边界填充

  1. 概念:基于原尺寸对图像边界进行填充
  2. 使用cv2.copyMakeBorder(img,top_size,bottom_size,left_size,right_size,type)函数
  3. type是图像填充的形式,
  • BORDER_REPLICATE   复制法,即直接复制最边缘的像素
  • BORDER_REFLECT       反射法,  例:  cba||abcd||dcb  镜面
  • BORDER_REFLECT_101  反射法,例:   fedcb||abcdefg||fedbc
  • BORDER_WRAP              外包装法,例:   bcdefg||abcdefg||abcdef
  • BORDER_CONSTANT      常量法,用常数值填
'''
Created on 2022年11月26日

@author: sun'xiao'wen
'''
import cv2 
import matplotlib.pyplot as plt
import numpy as np 
import os 
from PIL import Image

os.chdir('D:/AAA大学/3大二上/计算机视觉/第2-7章笔记课件') #此处路径中可以有中文字符
image = cv2.imread("cat.jpg");
top_size,bottom_size,left_size,right_size=(50,50,50,50)
#复制法
replicate=cv2.copyMakeBorder(image,top_size,bottom_size,left_size,right_size,borderType=cv2.BORDER_REPLICATE)
#反射法
reflect=cv2.copyMakeBorder(image,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT)
#反射法101
reflect101=cv2.copyMakeBorder(image,top_size,bottom_size,left_size,right_size,cv2.BORDER_REFLECT101)
#外包装法
wrap=cv2.copyMakeBorder(image,top_size,bottom_size,left_size,right_size,cv2.BORDER_WRAP)
#常量法,需要指定value值,0为黑色
constant=cv2.copyMakeBorder(image,top_size,bottom_size,left_size,right_size,cv2.BORDER_CONSTANT,value=0)
#---------展示图片-------------
#plt.subplot()划分坐标区域
#plt.imshow()对图像进行处理
#plt.title()为图像设置标题
plt.subplot(231),plt.imshow(image,'gray'),plt.title('ORIGINAL')#不能用中文
plt.subplot(232),plt.imshow(replicate,'gray'),plt.title('REPLICATE')
plt.subplot(233),plt.imshow(reflect,'gray'),plt.title('REFLECT')
plt.subplot(234),plt.imshow(reflect101,'gray'),plt.title('REFLECT101')
plt.subplot(235),plt.imshow(wrap,'gray'),plt.title('WRAP')
plt.subplot(236),plt.imshow(constant,'gray'),plt.title('CONSTANT')
plt.show()

 输出结果为

计算机视觉笔记11.26_第1张图片

数值计算

'''
Created on 2022年11月26日

@author: sun'xiao'wen
'''
import cv2 
import matplotlib.pyplot as plt
import numpy as np 
import os 
from PIL import Image
import pylab
from dill.tests.test_mixins import fx

os.chdir('D:/AAA大学/3大二上/计算机视觉/第2-7章笔记课件') #此处路径中可以有中文字符
img_cat = cv2.imread("cat.jpg");
img_dog = cv2.imread("dog.jpg");
img_cat2=img_cat+10#在图像中,给每一个像素点加10
data_cat = np.asarray(img_cat[:5,:,0]);#转换为矩阵,[]内意思是打印前五行即可
data_cat2 = np.asarray(img_cat2[:5,:,0]);
print("cat原图");
print(data_cat);
print("cat加十");
print(data_cat2);
#图像相加
data_cat2pro = np.asarray((img_cat+img_cat2)[:5,:,0]);
#大于255自动对256取余
print("cat和cat2相加1");
print(data_cat2pro);
data_cat2plus = np.asarray(cv2.add(img_cat,img_cat2)[:5,:,0]);
#大于255即输出255
print("cat和cat2相加2");
print(data_cat2plus);
print("cat和dog图片融合");
#img_cat+img_dog   会报错
print(img_cat.shape);
print(img_dog.shape);#输出两图片像素
img_dog=cv2.resize(img_dog,(500,414))
print(img_dog.shape);#dog图修改尺寸后像素

#图像融合
res1=cv2.addWeighted(img_cat,0.4,img_dog,0.6,0)
plt.imshow(res1)
pylab.show()

#对图像尺寸进行操作
res2=cv2.resize(img_cat,(0,0),fx=3,fy=1)#x坐标三倍,y坐标1倍
plt.imshow(res2)
pylab.show()

res3=cv2.resize(img_cat,(0,0),fx=1,fy=3)
plt.imshow(res3)
pylab.show()

输出图像如下

计算机视觉笔记11.26_第2张图片计算机视觉笔记11.26_第3张图片计算机视觉笔记11.26_第4张图片

你可能感兴趣的:(计算机视觉,opencv,人工智能)