OpenCV-Day-003:图像对象的创建与赋值

本文探讨了在Python中使用OpenCV处理图像时,直接赋值导致图像对象共享内存的问题,并通过实例解释了如何正确创建和赋值以避免这种现象。此外,还介绍了彩色图像转灰度图的多种方法,包括浮点算法、整数方法、移位方法、平均值法和仅取绿色值等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码

import cv2 as cv
import numpy as np

src = cv.imread('./0.jpg', cv.IMREAD_COLOR)
cv.namedWindow('rawPicture', cv.WINDOW_AUTOSIZE)
cv.imshow('rawPicture', src)

temp = np.copy(src)
cv.imshow('temp', temp)

temp2 = src
src[0:400, 200:300, :] = 255
cv.imshow('temp2', temp2)

temp3 = np.zeros(src.shape, src.dtype)
cv.imshow('temp3', temp3)

temp4 = np.zeros([512, 512], np.uint8)
cv.imshow('temp4', temp4)

temp5 = np.ones(shape=[512, 512])
cv.imshow('temp5', temp5)

cv.waitKey(0)
cv.destroyAllWindows()


实验结果

在这里插入图片描述

解释

temp2 = src
src[0:400, 200:300, :] = 255
cv.imshow('temp2', temp2)

上图中temp2中有一块图像变成白色的了,是因为在python中,直接赋值语句只是一种引用(相当于c语言中的指针),并没有真的在内存中开辟新的内存空间。也就是说,temp2与src指向内存中相同的位置。
另外,在图像数据中:把白色与黑色之间按对数关系分成若干级,称为“灰度等级”。范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像,注意与二值图像的区别,二值图像的灰度值只有0和1两种。

课外拓展:

彩色图象的灰度其实在转化为黑白图像后的像素值(是一种广义的提法),转化的方法看应用的领域而定,一般按加权的方法转换,R, G,B 的比一般为3:6:1。
任何颜色都由红、绿、蓝三基色组成,假如原来某点的颜色为RGB(R,G,B),那么,我们可以通过下面几种方法,将其转换为灰度:
1.浮点算法:Gray=R0.3+G0.59+B0.11
2.整数方法:Gray=(R
30+G59+B11)/100
3.移位方法:Gray =(R77+G151+B*28)>>8;
4.平均值法:Gray=(R+G+B)/3;
5.仅取绿色:Gray=G;
通过上述任一种方法求得Gray后,将原来的RGB(R,G,B)中的R,G,B统一用Gray替换,形成新的颜色RGB(Gray,Gray,Gray),用它替换原来的RGB(R,G,B)就是灰度图了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若北辰

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值