我正在尝试使用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。
答案 0 :(得分:3)
问题是您没有将图片正确转换为uint8图片。可以使用int res = df.parse(this.DA_PRM_CTR_ORDER).compareTo(converted);
来解决。
尝试一下:
cv.convertScaleAbs
文档: https://docs.opencv.org/3.4/d5/db5/tutorial_laplace_operator.html
关于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()
的文档: https://docs.opencv.org/3.4/d2/de8/group__core__array.html#ga3460e9c9f37b563ab9dd550c4d8c4e7d