【问题标题】:cv2 treshold does not work correctly on second imagecv2 阈值在第二张图像上无法正常工作
【发布时间】:2018-11-07 23:56:38
【问题描述】:

我是 python 新手,我正在玩背景减法来可视化更改前后图像的变化。

我使用cv2 库编写了一个简短的脚本:

#!/usr/bin/env python

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt


#GRAYSCALE ONLY FOR TESTING
#Test with person appearing in image
img1 = cv.imread("images/1.jpg", 0)
img2 = cv.imread("images/2.jpg", 0)
img3 = cv.subtract(img1, img2)
ret,thresh1 = cv.threshold(img3,90,255,cv.THRESH_BINARY)


#Test with satelite image of japan landslide changes after earthquake 
jl_before = cv.imread("images/japan_earthquake_before.jpg",0)
jl_after = cv.imread("images/japan_earthquake_after.jpg",0)
jl_subtraction = cv.subtract(jl_before, jl_after)
ret,thresh2 = cv.threshold(img3,20,255,cv.THRESH_BINARY)

images = [img1, img2, thresh1, jl_before, jl_after, thresh2]
titles = ["Image1", "Image2", "Changes", "Japan_Before", "Japan_After", "Japan_Changes" ]
for i in range(6):
    plt.subplot(2,3,i+1),plt.imshow(images[i],'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
plt.show()

结果如下所示:

为什么第二组图像的掩码中存在与第一组图像相比发生变化的掩码?

我使用了不同的变量,thresh1thresh2

任何帮助将不胜感激,因为我似乎无法找到问题。

【问题讨论】:

    标签: python cv2 image-thresholding


    【解决方案1】:

    因为复制粘贴时错过了更改:

    ret,thresh2 = cv.threshold(img3,20,255,cv.THRESH_BINARY)
                               ^^^^
    

    【讨论】:

    • 哇...非常感谢 :D 我会尽快接受您的回答
    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2013-08-06
    相关资源
    最近更新 更多