美文网首页
opencv图像复制和抽色问题

opencv图像复制和抽色问题

作者: 1037号森林里一段干木头 | 来源:发表于2020-06-19 15:12 被阅读0次

突然发现图片复制不能直接image=source_image,这样image只是source_image的一个”代号“而已,并没有创建一个新的图像,在修改image的元素时同时也会修改了source_image的对应元素。如下面这个例子

import numpy as np
import cv2 as cv
import os
import time
start=time.time()
imgpath="E:\image_data"
imgpath=os.path.join(imgpath,'j3.png')
src_img=cv.imread(imgpath)

rsrc_img=src_img
print("source image",src_img[0][1])
#cv.imshow("sr",src_img)
for i in range(src_img.shape[0]):
    for j in range(src_img.shape[1]):
        rsrc_img[i][j][1]=0
        rsrc_img[i][j][0]=0
end=time.time()
print("run time:",end-start)

cv.imshow("r",rsrc_img)
cv.waitKey(0)
cv.destroyAllWindows()

print("rsrc_img",rsrc_img[0][1])
print("after setting pixl source image",src_img[0][1])


输出结果


     source image [255 255 255]
     run time: 0.49473094940185547
     rsrc_img [  0   0 255]
     after setting pixl source image [  0   0 255]
   

改变rsrc_image也就改变了sourc_ image,解决办法就是img=source_img.copy(),这样就创建了一的新的图了。

另外,opecv颜色通道顺序为BGR

如上面程序把图片的0(蓝色)、1(绿色)通道值设为0,只保留了红色通道的数据,图片效果如下


[(33.PNG] 33.PNG

相关文章

网友评论

      本文标题:opencv图像复制和抽色问题

      本文链接:https://www.haomeiwen.com/subject/niivxktx.html