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 赋值 深拷贝浅拷贝的更多相关文章

  1. 【转】Python中的赋值、浅拷贝、深拷贝介绍

    这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中 ...

  2. 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

    当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...

  3. Python中赋值、浅拷贝与深拷贝

    python中关于对象复制有三种类型的使用方式,赋值.浅拷贝与深拷贝.他们既有区别又有联系,刚好最近碰到这一类的问题,研究下. 一.赋值 在python中,对象的赋值就是简单的对象引用,这点和C++不 ...

  4. python直接赋值,浅拷贝和深拷贝

    本文参考自<Python 直接赋值.浅拷贝和深度拷贝解析> 定义 直接赋值:就是对象的引用(别名) 浅拷贝(copy):拷贝父对象,不拷贝对象内部的子对象 深拷贝(deepcopy):co ...

  5. Python 赋值、浅拷贝和深拷贝

    初学Python,和C++还是有许多不同.直接赋值.浅拷贝和深拷贝,这三种拷贝对象的操作之间还是有许多的区别.Python语言的版本为2.7,在Pycharm中进行实验. 一.直接赋值 用下面的代码来 ...

  6. js对象的直接赋值、浅拷贝与深拷贝

    最近Vue项目中写到一个业务,就是需要把对话框的表单中的数据,每次点击提交之后,就存进一个el-table表格中,待多次需要的表单数据都提交进表格之后,再将这个表格提交,实现多个表单数据的同时提交,期 ...

  7. javascript 关于赋值、浅拷贝、深拷贝的个人理解

    关于赋值.浅拷贝.深拷贝,以前也思考良久,很多时候都以为记住了,但是,我太难了.今天我特地写下笔记,希望可以完全掌握这个东西,也希望可以帮助到任何想对学习这个东西的同学. 一.栈.堆.指针地址 栈内存 ...

  8. Python对象赋值、浅拷贝、深拷贝

    Python中,基本数据类型,理解为常见数据类型:布尔型.整型.浮点型.字符串.列表.元组.字典.集合,随语言不同而不同,但是根据在内存中存储方式的不同,区分开原子类型和容器类型. 对象赋值 对象的赋 ...

  9. Python - 对象赋值、浅拷贝、深拷贝的区别

    前言 Python 中不存在值传递,一切传递的都是对象的引用,也可以认为是传址 这里会讲三个概念:对象赋值.浅拷贝.深拷贝 名词解释 变量:存储对象的引用 对象:会被分配一块内存,存储实际的数据,比如 ...

随机推荐

  1. Ubuntu 文件文件夹查看权限和设置权限

    ubuntu下查看权限的命令为: ls -l filename ls -ld folder ubuntu下设置权限的命令为: 一共有10位数 其中: 最前面那个 - 代表的是类型 中间那三个 rw- ...

  2. JSON 文件格式解析

    JSON 文件大致说明 JSON 文件你可以理解为就是一个字典文件. 格式为 { 索引:数据, 索引:{ 索引:数据, 索引:{ 索引:数据, 索引:数据 } } } 自己写一个 my.json { ...

  3. 幸好会java

    转做android的可能性又往前增加了一分.

  4. sama5d3 环境检测 adc测试

    #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h># ...

  5. Linux编译安装PHP Mysql Nginx

    安装gcc g++等编译器 yum -y install gcc gcc-c++ automake autoconf libtool glibc make 安装一些lnmp依赖的库 yum -y in ...

  6. [android] AndroidManifest.xml - 【 manifest -> application】

    语法: <application android:allowTaskReparenting=["true" | "false"] android:back ...

  7. CLion 2017 注册码

    注册码使用时间2017-2018 CNEKJPQZEX-eyJsaWNlbnNlSWQiOiJDTkVLSlBRWkVYIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNz ...

  8. 第二百五十节,Bootstrap项目实战--响应式导航

    Bootstrap项目实战--响应式导航 学习要点: 1.响应式导航 一.响应式导航 基本导航组件+响应式 第一步,声明导航区域,设置导航默认样式,设置导航条固定在顶部navbar样式class类,写 ...

  9. POJ 3181 Dollar Dayz 01全然背包问题

    01全然背包问题. 主要是求有多少种组合.二维dp做的人多了,这里使用一维dp就能够了. 一维的转换方程:dp[j] = dp[j-i] + dp[j];当中i代表重量,j代表当前背包容量. 意思就是 ...

  10. MySQL之explain 的type列 & Extra列

    explain 可以分析 select 语句的执行,即 MySQL 的“执行计划. 一.type 列   MySQL 在表里找到所需行的方式.包括(由左至右,由最差到最好): | All | inde ...