gpt4 book ai didi

python - OpenCV - Python 和 C++ 中拉普拉斯算子的不同结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:09:37 27 4
gpt4 key购买 nike

我正在编写其中一个 C++ 教程的 Python 版本,并注意到输出图像会有所不同,具体取决于我使用的是 C++ 还是 Python。

例如,与我们的 friend 莉娜:

enter image description here

C++代码:

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace cv;

int main( int, char** argv )
{
Mat src, dst, abs_dst;
int kernel_size = 3;
int scale = 1;
int delta = 0;
int ddepth = CV_16S;

src = imread( argv[1] );

Laplacian( src, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT );
convertScaleAbs( dst, abs_dst );

const char* window_name = "Laplace Demo";
namedWindow( window_name, WINDOW_AUTOSIZE );
imshow( window_name, abs_dst );

waitKey(0);
return 0;
}

Python代码:

import sys
import cv2

def main(argv):

ddepth = cv2.CV_16S
kernel_size = 3

src = cv2.imread(sys.argv[1], cv2.IMREAD_COLOR)

dst = cv2.Laplacian(src, ddepth, kernel_size)
abs_dst = cv2.convertScaleAbs(dst)

window_name = "Laplace Demo"
cv2.namedWindow(window_name, cv2.WINDOW_AUTOSIZE)
cv2.imshow(window_name, abs_dst)

cv2.waitKey(0)
return 0


if __name__ == "__main__":
main(sys.argv[1:])

C++ 图像输出:

enter image description here

Python 图像输出:

enter image description here

你知道为什么会这样吗?

最佳答案

回答太迟了,但如果您在 python 代码中指定参数名称“ksize”,它会起作用:

dst = cv2.Laplacian(src, ddepth, ksize=kernel_size)

关于python - OpenCV - Python 和 C++ 中拉普拉斯算子的不同结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43903243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com