hellou

opencv学习笔记(二)

数值计算:

img = cv2.imread('img') + 10

即在原图像的矩阵上,对每一个像素进行+10操作,若出现 img = cv2.imread(img1 + img2),则此时相加结果超出了256的数值,再-256,相当于%256

在cv2.add(img1,img2)中,若相加的结果>255.则存储为255。

图像融合:

import cv2
import matplotlib.pyplot as plt

img_handsome = cv2.imread('C:/Users/hellou/Desktop/beauty.jpg')
img_girl = cv2.imread('C:/Users/hellou/Desktop/beautiful.jpg')

print(img_girl.shape)
print(img_handsome.shape)

img_girl = cv2.resize(img_girl,(959,629))
#resize时,后面括号内的数值要倒过来
print(img_girl.shape)

res = cv2.addWeighted(img_girl,0.4,img_handsome,0.6,0)
#0.4和0.6分别表示图片比重,0代表偏置项n
cv2.imshow('res_image',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

在resize函数中:
res = cv2.resize(img,(0,0),fx=3,fy=1) 其中fx与fy后面的数值分别表示扩大/缩小至原来的多少倍数

边界填充:
 1 #边界填充
 2 import cv2
 3 
 4 top_size,bottom_size,left_size,right_size = (50,50,50,50)
 5 #分别表示顶部、底部、左边、右边四个方向上的边界拓宽值
 6 
 7 img = cv2.imread('C:/Users/hellou/Desktop/forest.jpg')
 8 replicate = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REPLICATE)
 9 reflect = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REFLECT)
10 reflect101 = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_REFLECT_101)
11 warp = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_WRAP)
12 constant = cv2.copyMakeBorder(img,10,10,10,10,cv2.BORDER_CONSTANT)
13 #cv.BORDER_CONSTANT 添加一个恒定的彩色边框。该值应作为下一个参数value给出。\
14 #cv.BORDER_REFLECT 边框将是边框元素的镜像反射,如下所示:fedcba|abcdefgh|hgfedcb
15 #cv.BORDER_REFLECT_101或者cv.BORDER_DEFAULT 与上面相同,但略有改动,如下所示: gfedcb | abcdefgh | gfedcba
16 #cv.BORDER_REPLICATE最后一个元素被复制,如下所示: aaaaaa | abcdefgh | hhhhhhh
17 #cv.BORDER_WRAP 不好解释,它看起来像这样: cdefgh | abcdefgh | abcdefg
18 
19 cv2.imshow('img',img)
20 cv2.imshow('replicate',replicate)
21 cv2.imshow('reflect',reflect)
22 cv2.imshow('reflect101',reflect101)
23 cv2.imshow('warp',warp)
24 cv2.imshow('constant',constant)
25 
26 cv2.waitKey(0)
图像阈值:
ret, dst = cv2.threshold(src, thresh, maxval, type)
  src :输入图,只能输入单通道图像,通常来说为灰度图. dst :输出图
  thresh :阈值
  maxval :当像素值超过了阈值(或者小于阈值,根据 type 来决定),所赋予的值
  type :二值化操作的类型
cv2.THRESH_BINARY cv2.THRESH_BINARY_INV cv2.THRESH_TRUNC cv2. THRESH_TOZERO cv2.THRESH_TOZERO
超过阈值部分取maxval(最大值),否则取0 cv2.THRESH_BINARY的反转 大于阈值部分设置为阈值,否则不变 大于阈值部分不改变,否则为0 cv2.THRESG_TOZERO的反转

 

 

posted on 2023-06-18 20:35  云上u  阅读(3)  评论(0编辑  收藏  举报

导航