为什么这个 OpenCV 阈值调用 return 空白图像?
Why does this OpenCV threshold call return a blank image?
我正在关注 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, 255, cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh", thresh)
cv2.waitKey()
然而图像 thresh
显示为带有浅灰色背景的空白 window,教程应该在教程源代码附带的图像中使用单色配置文件。
我使用相同的代码和相同的输入图像,但教程告诉我期待一个显示对象轮廓的单色图像,而我只得到一个空白的灰色图像。这里可能有什么问题?
您的 thresh
参数值应不同于 maxval
值。
thresh = cv2.threshold(src=gray,
thresh=127,
maxval=255,
type=cv2.THRESH_BINARY_INV)[1]
gray
是您的源图像。
thresh
是阈值
maxval
是最大值
type
是阈值类型
当您将 thresh
和 maxval
设置为相同的值时,您表示:
I want to display my pixels above 255 values, but none of the pixels should exceed 255.
因此结果是一张空白图像。
一种可能的方法是将阈值设置为 127。
例如:
原始图像 阈值图像
import cv2
image = cv2.imread("fgtc7_256_256.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(src=gray,
thresh=127,
maxval=255,
type=cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh", thresh)
cv2.waitKey(0)
我正在关注 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, 255, cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh", thresh)
cv2.waitKey()
然而图像 thresh
显示为带有浅灰色背景的空白 window,教程应该在教程源代码附带的图像中使用单色配置文件。
我使用相同的代码和相同的输入图像,但教程告诉我期待一个显示对象轮廓的单色图像,而我只得到一个空白的灰色图像。这里可能有什么问题?
您的 thresh
参数值应不同于 maxval
值。
thresh = cv2.threshold(src=gray,
thresh=127,
maxval=255,
type=cv2.THRESH_BINARY_INV)[1]
gray
是您的源图像。thresh
是阈值maxval
是最大值type
是阈值类型
当您将 thresh
和 maxval
设置为相同的值时,您表示:
I want to display my pixels above 255 values, but none of the pixels should exceed 255.
因此结果是一张空白图像。
一种可能的方法是将阈值设置为 127。
例如:
原始图像 阈值图像
import cv2
image = cv2.imread("fgtc7_256_256.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(src=gray,
thresh=127,
maxval=255,
type=cv2.THRESH_BINARY_INV)[1]
cv2.imshow("Thresh", thresh)
cv2.waitKey(0)