【opencv】imread 赋值 深拷贝浅拷贝
2024-10-19 01:27:46
import cv2
import copy
import os def filter_srcimg(dstimg):
ss=3
srcimg=copy.deepcopy(dstimg)
#aa=5
imgw=srcimg.shape[0]
imgh=srcimg.shape[1]
border_mat=[[0]*imgw]*imgh
for ddd in range(0,1):
for i in range(20,imgw-20):
for j in range(20,imgh-20):
loss=(8*float(srcimg[i][j][0])-float(srcimg[i-ss][j-ss][0])-float(srcimg[i-ss][j][0])-float(srcimg[i][j-ss][0])-float(srcimg[i-ss][j+ss][0])-float(srcimg[i+ss][j-ss][0])-float(srcimg[i][j+ss][0])-float(srcimg[i+ss][j][0])-float(srcimg[i+ss][j+ss][0]))/8
if loss>10 or srcimg[i][j][0]>180:
#print loss
#print "####,",srcimg[i][j][0]
border_mat[i][j]=1
#res=int((float(srcimg[i-aa][j-aa][0])+float(srcimg[i-aa][j][0])+float(srcimg[i][j-aa][0]))/3)
res=int(float(srcimg[i][j][0])-loss*3)
if res<0:
res=0
dstimg[i][j][0]=res
dstimg[i][j][1]=dstimg[i][j][0]
dstimg[i][j][2]=dstimg[i][j][0]
#return dstimg if __name__=='__main__':
for elem in os.listdir(os.getcwd()):
if '.py' not in elem:
img=cv2.imread(elem) cv2.imshow("",img)
cv2.waitKey(0) filter_srcimg(img)
cv2.imshow("",img)
cv2.waitKey(0)
注意事项:
1、cv2.imread返回类型
img=cv2.imread("ddd.png")
返回一个(高度,宽度,通道数)的ndarray
返回的ndarray中的数据类型是numpy.uint8,即8位无符号整数(0-255)
修改像素值:
img[0][0][0]=100
这里注意,因为ndarray中的类型为uint8,故赋的值上溢出(>255)或下溢出(<0)时,会自动取模,而不会报错!
2、深拷贝浅拷贝
(1)赋值时
对基本数据类型是值拷贝
对类是浅拷贝
如果对类进行值拷贝,需要使用深拷贝copy.deepcopy()
比较两个引用是否指向同一对象——用id()查看引用指向的地址,id()返回值为int
(2)函数传参时
与赋值时相同
对基本数据类型是值拷贝
输出是1
对类是浅拷贝
输出是[2,1,1]
最新文章
- 4.C#WinForm基础图片(显示和隐藏)
- 使用xib需要记得的小问题
- 第四章:Javascript表达式和运算符
- Win2003x64系统
- iOS App Icon图标 尺寸规范
- [HIHO1039]字符消除(字符串,枚举,模拟)
- Object-C 内存管理及对象
- 当html中存在url中如: onclick=";toView(&#39;参数1&#39;)";, 参数1是特别字符,如&;asop;&;quot;&#39; ";等时,浏览器解析时会报错。解决方法如文中描述
- DS4700存储日志收集
- SGU 190.Dominoes(二分图匹配)
- Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
- python入门(2)python的安装
- Git reset到某一次commit
- pyzmq学习笔记
- MVC是什么
- try、catch、finally都有return语句时执行哪个
- python 抽象类与接口类
- python 防死锁机制
- 无法连接 MKS:套接字连接尝试次数太多正在放弃
- IntelliJ IDEA 2017版 spring-boot2.0.访问jsp页面;IDE Springboot JSp 页面访问