我是OpenCV的新手。我想做一些与规范化相关的预处理。我想将我的图像标准化为一定的大小。以下代码的结果给了我一个黑色图像。有人能指出我到底做错了什么吗?我输入的图像是黑白图像
import cv2 as cv
import numpy as np
img = cv.imread(path)
normalizedImg = np.zeros((800, 800))
cv.normalize(img, normalizedImg, 0, 255, cv.NORM_MINMAX)
cv.imshow('dst_rt', self.normalizedImg)
cv.waitKey(0)
cv.destroyAllWindows()
答案 0 :(得分:7)
可以在http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#cv2.normalize看到,有一个→ dst
表示normalize
函数的结果作为输出参数返回。该函数不会就地更改输入参数dst
。
(self.
行中的cv.imshow('dst_rt', self.normalizedImg)
是拼写错误)
import cv2 as cv
import numpy as np
path = r"C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg"
img = cv.imread(path)
normalizedImg = np.zeros((800, 800))
normalizedImg = cv.normalize(img, normalizedImg, 0, 255, cv.NORM_MINMAX)
cv.imshow('dst_rt', normalizedImg)
cv.waitKey(0)
cv.destroyAllWindows()
答案 1 :(得分:4)
它给你一个黑色图像,因为你可能在img和normalizedImg中使用不同的大小。
import cv2 as cv
img = cv.imread(path)
img = cv.resize(img, (800, 800))
cv.normalize(img, img, 0, 255, cv.NORM_MINMAX)
cv.imshow('dst_rt', img)
cv.waitKey(0)
cv.destroyAllWindows()
答案 2 :(得分:1)
当您致电cv.imshow()
时,您使用的是self.normalizedImg
,而不是normalizedImg
。
自我。用于标识类成员及其在您编写的代码中的使用是不合适的。它甚至不应该像书面那样运行。但是,我假设此代码已从类定义中提取,但您必须在命名变量中保持一致,self.normalizedImg
与normalizedImg
不同。