我是OpenCV的初学者,我必须检测照片的正方形,但是,我有一个或一些错误。你知道是否有人可以帮助我吗?
我正在使用的图像是:
然而,我试图找到要成像的正方形。我不能做得很好。我想,错误是我需要格式为CV_8UC1的矩阵,但我不知道怎么能得到它。def findSquaresInImage(image):
blurred = np.mat(image.shape,np.dtype('u8'))
blurred = cv2.blur(blurred, (5, 5))
cv2.medianBlur(image, 9, blurred)
gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
gray0 = np.mat(blurred.copy(), np.dtype('u8'))
gray = np.mat(image.shape,np.dtype("u8"))
# ret, gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
squares = []
contours = []
for c in range(3):
ch = [c, 0]
image = cv2.mixChannels(blurred,gray0,ch)
threshold_level = 2
for l in range(threshold_level):
if l == 0:
cv2.Canny(gray0, 10, 20, gray,3)
cv2.dilate(gray, np.array([]), gray, (-1, -1))
else:
gray = gray0 >= (l+1) * 255 / threshold_level
(_, cnts, _) = cv2.findContours(gray.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
....
我正在使用的主例程,您可能会更改目录和图像的名称以运行该文件:
name = "./directory/file"
image = cv2.imread(name, cv2.IMREAD_COLOR)
image =findSquaresInImage(image)
答案 0 :(得分:0)
您可能会发现this answer对于显示用于创建矩阵或数组的dtype
参数非常有用。特别是dtype=np.uint8
在原始海报中对np.zeros()
的调用似乎可以适应您在示例中尝试使用np.mat()
的内容。