【opencv】imread 赋值 深拷贝浅拷贝
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]
【opencv】imread 赋值 深拷贝浅拷贝的更多相关文章
- 【转】Python中的赋值、浅拷贝、深拷贝介绍
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下 和很多语言一样,Python中 ...
- 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析
当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...
- Python中赋值、浅拷贝与深拷贝
python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...
- python直接赋值,浅拷贝和深拷贝
本文参考自<Python 直接赋值.浅拷贝和深度拷贝解析> 定义 直接赋值:就是对象的引用(别名) 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象 深拷贝(deepcopy):co ...
- Python 赋值、浅拷贝和深拷贝
初学Python,和C++还是有许多不同.直接赋值.浅拷贝和深拷贝,这三种拷贝对象的操作之间还是有许多的区别.Python语言的版本为2.7,在Pycharm中进行实验. 一.直接赋值 用下面的代码来 ...
- js对象的直接赋值、浅拷贝与深拷贝
最近Vue项目中写到一个业务,就是需要把对话框的表单中的数据,每次点击提交之后,就存进一个el-table表格中,待多次需要的表单数据都提交进表格之后,再将这个表格提交,实现多个表单数据的同时提交,期 ...
- javascript 关于赋值、浅拷贝、深拷贝的个人理解
关于赋值.浅拷贝.深拷贝,以前也思考良久,很多时候都以为记住了,但是,我太难了.今天我特地写下笔记,希望可以完全掌握这个东西,也希望可以帮助到任何想对学习这个东西的同学. 一.栈.堆.指针地址 栈内存 ...
- Python对象赋值、浅拷贝、深拷贝
Python中,基本数据类型,理解为常见数据类型:布尔型.整型.浮点型.字符串.列表.元组.字典.集合,随语言不同而不同,但是根据在内存中存储方式的不同,区分开原子类型和容器类型. 对象赋值 对象的赋 ...
- Python - 对象赋值、浅拷贝、深拷贝的区别
前言 Python 中不存在值传递,一切传递的都是对象的引用,也可以认为是传址 这里会讲三个概念:对象赋值.浅拷贝.深拷贝 名词解释 变量:存储对象的引用 对象:会被分配一块内存,存储实际的数据,比如 ...
随机推荐
- python学习笔记(3)--IDLE双击运行后暂停
本来想找一个python的IDE什么的,用过pycharm,vs装python插件,软件都太大了,习惯了用sublime写html,js这样的简直受不了. 一直坚持用着python自带的IDLE,不过 ...
- 一款基于jquery的喜欢动画按钮
今天给大家带来一款基于jquery的喜欢动画按钮.这个实例中给了三种动画特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <p class='heading'> C ...
- Unix系统编程()发送信号kill
与shell的kill命令类似,一个进程能够使用kill系统调用向另一进程发送信号. 之所以选择kill作为术语,因为早期UNIX实现中大多数信号的默认行为是终止进程. #include <si ...
- codeforces 429 On the Bench dp+排列组合 限制相邻元素,求合法序列数。
限制相邻元素,求合法序列数. /** 题目:On the Bench 链接:http://codeforces.com/problemset/problem/840/C 题意:求相邻的元素相乘不为平方 ...
- 终极方法,pjsip发起多方对讲出错Too many objects of the specified type (PJ_ETOOMANY)
http://blog.csdn.net/zhangjm_123/article/details/26727221 —————————————————————————————————————————— ...
- 阿里云ecs开启x11图形化桌面
阿里云帮助文档:https://www.alibabacloud.com/help/zh/faq-detail/41227.htm 安装云服务器 ECS CentOS 7 图形化桌面 以安装 MATE ...
- VMware ESXi 启动时提示引导错误:不是VMware引导槽。找不到管理程序(bank6 not a vmware boot bank no hypervisor found)
VMware ESXi 启动时提示引导错误: bank6 not a vmware boot bank no hypervisor found 大概中文意思是:不是VMware引导槽.找不到管理程序. ...
- Ubuntu libpng png++安装
http://blog.csdn.net/xiaozhun07/article/details/49865785 png使用过程问题小结: (1) libpng “png_set_longjmp_fn ...
- 第二百四十八节,Bootstrap轮播插件
Bootstrap轮播插件 学习要点: 1.轮播插件 本节课我们主要学习一下 Bootstrap 中的轮播插件. 一.轮播 轮播插件就是将几张同等大小的大图,按照顺序依次播放. 基本实例. 第一步,给 ...
- ssh证书登录(实例详解)
前言 本文基于实际Linux管理工作,实例讲解工作中使用ssh证书登录的实际流程,讲解ssh证书登录的配置原理,基于配置原理,解决实际工作中,windows下使用SecureCRT证书登录的各种问 ...