首页 > 其他分享 >【opencv学习】【图像的数值计算操作】

【opencv学习】【图像的数值计算操作】

时间:2022-12-14 16:33:00浏览次数:43  
标签:img image cv2 数值 cat opencv shape 图像 resize


import cv2


# 展示图像,封装成函数
def cv_show_image(name, img):
cv2.imshow(name, img)
cv2.waitKey(0) # 等待时间,单位是毫秒,0代表任意键终止
cv2.destroyAllWindows()


img_cat = cv2.imread('D:/images/cat.jpg')
print(img_cat.shape) # 彩色图像的shape=(H, W, C)
img_dog = cv2.imread('D:/images/dog.jpg')
print(img_dog.shape)

# 操作一:给每个像素整体加上一个数值
img_cat2 = img_cat + 10
print(img_cat2.shape)
print(img_cat[:3, :, 0]) # 只打印第1个通道的前3行数据,仅仅为了方便查看
print(img_cat2[:3, :, 0]) # 只打印第1个通道的前3行数据,仅仅为了方便查看,每个像素点的值加上了10

# 操作二:图像resize
# 第一种:直接让图像resize到指定的像素
img_cat_tmp = img_cat.copy()
res = cv2.resize(img_cat_tmp, (400, 300))
print(res.shape)
cv_show_image('reshaped image', res)
# 第二种:直接让图像resize到指定的比例,按照某个比例放大和缩小
img_cat_tmp = img_cat.copy()
res = cv2.resize(img_cat_tmp, (0, 0), fx=2, fy=2) # 扩大4倍
print(res.shape)
cv_show_image('reshaped image', res)

img_cat_tmp = img_cat.copy()
res = cv2.resize(img_cat_tmp, (0, 0), fx=0.5, fy=0.5) # 缩小4倍
print(res.shape)
cv_show_image('reshaped image', res)

# 操作三:图像相加
# 由于二图片大小不一致,因此需要先弄成一致的size。两个shape值不一样是无法相加的
# resize的第二个参数是一个目标的(W, H)
img_cat_resize = cv2.resize(img_cat, (img_dog.shape[1], img_dog.shape[0]))
print(img_cat_resize.shape)

# 第一种加法,单纯的数值操作,加超过了 unit8 的范围255,就会产生uint8数据翻转
img_mix = img_cat_resize + img_dog
print(img_mix[:3, :, 0]) # 只打印第1个通道的前3行数据,仅仅为了方便查看
cv_show_image('image', img_mix)

# 第二种加法,使用cv函数相加,当像素点超过255的,就截断,只取255,这样是为了图像考虑。
img_mix = cv2.add(img_cat_resize, img_dog)
print(img_mix[:3, :, 0]) # 只打印第1个通道的前3行数据,仅仅为了方便查看
cv_show_image('image', img_mix)

# 第三种加法,使用cv函数相加,当像素点超过255的,就截断,只取255,这样是为了图像考虑。但是会考虑各个部分的权重, y = a*x_1 + b*x_2 + b
# 这样的图像融合才能更好的看清楚样子
img_mix = cv2.addWeighted(img_cat_resize, 0.4, img_dog, 0.6, 0)
print(img_mix[:3, :, 0]) # 只打印第1个通道的前3行数据,仅仅为了方便查看
cv_show_image('image', img_mix)


标签:img,image,cv2,数值,cat,opencv,shape,图像,resize
From: https://blog.51cto.com/u_12419595/5937531

相关文章

  • 表示数值的字符串
    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3","+-5"和"12e+4.......
  • 关于opencv从图中画圈的思考
    读取图像;对图像进行操作;识别球门;识别途中白色区域;从图像上一行一行的扫描识别像素BGR值为(0,0,255);直到出现有白色区域时开始记录数据,可以将第一次扫描到点所在的第一行下十行......
  • 遥感图像识别(标注)软件实现
      遥感图像识别已经有很多成熟的模型和实现,这里我们选择yolov5_obb和dota数据集,以说明并实现一种思路:那就是先识别、再标注、再训练的过程。鉴于领域内数据往往比较封......
  • 【SURF+GTM】基于SURF特征提取,GTM去除错误配准点的图像匹配算法的MATLAB仿真
    1.软件版本matlab2021a2.核心代码 clear,clcI1=rgb2gray(imread('fetch.JPG'));I2=rgb2gray(imread('fetch1.JPG'));%I1=imresize(I1,[290,290])......
  • 将1bpp的bmp图像存储为1bpp或者2bpp的tiff格式
    //将1bpp的位图转换为1bit/2bittiff/**参数:BYTE*src二值图像的像素数据,不包含头部信息,1bpp,intsrc_width原图的宽度,inpixles,intsrc_height原图的高......
  • GDIPlus灰度化图像
    将RGB彩色图像转为8位的索引颜色先定义一个宏//Greyscaleconversion#defineGREY(r,g,b)(BYTE)(((WORD)r*77+(WORD)g*150+(WORD)b*29)>>8//#defineGREY......
  • python奇妙旅行之4行代码生成图像验证码
    在学习的路上,永无止境。就好比人掉进"深渊",永远无法自拔!  ~ ~!我没有开车,我没有开车~~~今天空闲时间再看某大佬得论坛,被点了一下,就想起来了2种方法,生成图片验证码,简约......
  • DW组队学习——opencv框架
    本篇是针对DataWhale组队学习项目——opencv框架而整理的学习笔记,主要是对自己不熟悉的内容进行记录。由于水平实在有限,不免产生谬误,欢迎读者多多批评指正。基本情况计......
  • vue 父组件传子组件数值,父值变更子获取的值没有变的问题【亲测有效】
    1.父组件给子组件传值,子组件使用props接收值。//父组件<div><Treeselect:value="editFormData.customerId"@change="acceptVal($event,'create')"placeholder="组织......
  • C语言中合法的数值常量知识点记录
    1.八进制常量:开头必须是0,且八进制是0-7之间组成的数,例如,029就是错误的八进制表示方式。2.十六进制常量:0X开头,包含字母ABCDEF,不区分大小写,例如0x与0X一样,0Xaa与0xAA,都是......