我试图使用cv2.laplacian
从相机中获取捕捉到的帧的边缘,但是输出似乎不太正确。
输出如下所示:
像这样的人:
下面是代码:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 160)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 120)
while(1):
_, frame = cap.read()
laplacian = cv2.Laplacian(frame, cv2.CV_64F)
# cv2.imshow('oringinal', frame)
cv2.imshow('laplacian',laplacian)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
cap.release()
我认为它显示的是一些边缘和整体的颜色不会那么明亮和白色。
我的密码有什么问题吗?我在用MAC。
发布于 2019-07-24 08:03:54
问题是您没有正确地将图片转换为uint8图像。它可以用cv.convertScaleAbs
来解决。
试试这个:
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 160)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 120)
while(1):
_, frame = cap.read()
laplacian = cv2.Laplacian(frame, cv2.CV_64F)
# cv2.imshow('oringinal', frame)
abs_dst = cv.convertScaleAbs(laplacian)
cv2.imshow('laplacian',abs_dst)
k = cv2.waitKey(5) & 0xFF
if k == 27:
break
cv2.destroyAllWindows()
cap.release()
Documentation: operator.html
关于cv.convertScaleAbs
**:** array.html#ga3460e9c9f37b563ab9dd550c4d8c4e7d的文档
https://stackoverflow.com/questions/57177705
复制相似问题