问题描述
我正在OpenCV上关注本教程,该教程使用以下代码:
import argparse
import imutils
import cv2
ap = argparse.ArgumentParser()
ap.add_argument("-i","--image",required=True,help="path to input image")
args = vars(ap.parse_args())
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray,255,cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh",thresh)
cv2.waitKey()
然而,图像thresh
显示为具有浅灰色背景的空白窗口,在本教程中,本教程应该使用本教程源代码随附的图像的单色配置文件。
我使用相同的代码和相同的输入图像,但是本教程告诉我期望显示对象轮廓的单色图像,而我只得到空白的灰色图像。这里可能出什么问题了?
解决方法
您的thresh
参数值应与maxval
值不同。
thresh = cv2.threshold(src=gray,thresh=127,maxval=255,type=cv2.THRESH_BINARY_INV)[1]
-
gray
是您的源图像。 -
thresh
是阈值 -
maxval
是最大值 -
type
是阈值类型
如果将thresh
和maxval
设置为相同的值,则说明:
我想显示超过255个值的像素,但所有像素都不应超过255个。
因此结果是空白图像。
一种可能的方法是将阈值设置为127。
例如:
原始图像阈值图像
import cv2
image = cv2.imread("fgtc7_256_256.jpg")
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(src=gray,type=cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh",thresh)
cv2.waitKey(0)