无法从opencv-python Laplacian操作获得预期的输出

时间:2019-07-24 07:41:54

标签: python opencv

我正在尝试使用cv2.laplacian从相机获取捕获的帧的边缘,但是输出似乎不太正确。

输出看起来像这样: output img

期望这样的人:expected

代码如下:

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。

1 个答案:

答案 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