使用实验数据分析:“ = ” 和“.copy()” 的区别【python-opencv】

简介: 使用实验数据分析:“ = ” 和“.copy()” 的区别【python-opencv】

前言


  最近总结了下三种复制图像的方法,也是在业务上经常会用到的同时也是在面试过程中会被提问的问题,这三种方式分别是:

  1. =
  2. .copy()

下面通过一系列实验比对进行剖析这三种方式的差异




比对实验


实验之前:

准备好实验数据,我们准备待测图像test.jpg。这张图像是一张纯蓝色RGB图像,图像信息如下:

  1. 图像shape = (480, 640, 3)
  2. 图像占用内存 5431 Bit


实验一:计算耗时


  调用time包进行计算从开始读取数据到复制完数据所消耗的时间,我们分别使用 方式1、2进行复制图像计算耗时:

“ = ” :   0.003245115280151367

“.copy()”: 0.005619525909423828


结论: t(=) < t(.copy())

实验代码:

import time
import cv2
t1 = time.time()
img1 = cv2.imread("test.jpg")
img2 = img1
# img2 = img1.copy()
t2 = time.time()
t = t2 - t1
print(t)
复制代码



实验二:查看数据大小

  使用sys库获取对象的大小(以字节为单位),sys.getsizeof()进行获取对象的大小,这里大小是指加载的python对象(及其所有元数据)的大小:

“ = ” :   921736(此时复制图等于原图)

“.copy()”: 921736(此时复制图等于原图)

结论: t(=) = t(.copy())


实验代码:

import cv2
import sys
img1 = cv2.imread("test.jpg")
# img2 = img1
img2 = img1.copy()
print(sys.getsizeof(img1))
print(sys.getsizeof(img2))
复制代码

  使用pympler库,它提供了计算对象使用的RAM内存的工具,我们可以使用pympler库进行查看运算这两种复制图像时所产生的RAM。

“ = ” :   921752(此时复制图等于原图)

“.copy()”: 921752(此时复制图等于原图)

结论: t(=) = t(.copy())


实验代码:

import cv2
from pympler import asizeof
img1 = cv2.imread("test.jpg")
img2 = img1
# img2 = img1.copy()
print(asizeof.asizeof(img1))
print(asizeof.asizeof(img2))
复制代码



存储复制图像

   我们采用cv2.imwrite()把复制的图像进行存储,然后直接查看存储数据的属性得到其值进行比较。 “ = ” :   5431(此时复制图等于原图)

“.copy()”: 5431(此时复制图等于原图)

结论: t(=) = t(.copy())


实验代码:

import cv2
img1 = cv2.imread("1111.jpg")
img2 = img1
# img2 = img1.copy()
cv2.imwrite("savetest.jpg", img2)
复制代码




结论


   从结果上来看,这两种复制图像并没有什么不同,在大多数情况下三可以通用的。如果业务逻辑上没有过多的重载的话可以使用=进行复制图像(节约时间);如果在业务逻辑上我们需要改变原图属性而复制的图像仅需保持与原图相同属性,则可以选择.copy()进行图像复制。


附图


image.png

相关文章
|
12天前
|
人工智能 数据可视化 数据挖掘
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
【python】Python航空公司客户价值数据分析(代码+论文)【独一无二】
|
17天前
|
存储 数据挖掘 数据库
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
【Python】python天气数据抓取与数据分析(源码+论文)【独一无二】
|
28天前
|
数据可视化 数据挖掘 Python
python数据分析和可视化【3】体检数据分析和小费数据分析
python数据分析和可视化【3】体检数据分析和小费数据分析
34 0
|
28天前
|
数据可视化 数据挖掘 Python
python数据分析和可视化【1】
python数据分析和可视化【1】
40 0
|
28天前
|
数据可视化 数据挖掘 BI
python数据分析和可视化【2】鸢尾花数据分析
python数据分析和可视化【2】鸢尾花数据分析
34 0
|
4天前
|
Python 数据挖掘 存储
Python 数据分析(PYDA)第三版(七)(4)
Python 数据分析(PYDA)第三版(七)
|
Python Shell 存储
Python 数据分析(PYDA)第三版(七)(3)
Python 数据分析(PYDA)第三版(七)
Python 数据分析(PYDA)第三版(七)(3)
|
机器学习/深度学习 数据可视化 Python
Python 数据分析(PYDA)第三版(六)(2)
Python 数据分析(PYDA)第三版(六)
|
机器学习/深度学习 Python 数据挖掘
Python 数据分析(PYDA)第三版(六)(1)
Python 数据分析(PYDA)第三版(六)
|
4天前
|
Python 数据格式 XML
Python 数据分析(PYDA)第三版(三)(1)
Python 数据分析(PYDA)第三版(三)

热门文章

最新文章