Canny 边缘检测是一种图像处理算法,可以检测图像中的边缘。它是一种多阶段算法,涉及降噪、找到图像的强度梯度、非极大值抑制和滞后阈值化等一系列步骤。
OpenCV 提供了Canny
允许使用 Canny 算法在图像中查找边缘的功能。函数接受滞后过程中使用的第一和第二阈值。
- python实现
import cv2
inputImg = cv2.imread('test.jpg')
inputImg = cv2.cvtColor(inputImg, cv2.COLOR_BGR2GRAY)
outputImg = cv2.Canny(inputImg, 400, 500)
cv2.imshow('Input image', inputImg)
cv2.imshow('Output image', outputImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
- C++实现
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat inputImg = imread("test.jpg");
cvtColor(inputImg, inputImg, COLOR_BGR2GRAY);
Mat outputImg;
Canny(inputImg, outputImg, 400, 500);
imshow("Input image", inputImg);
imshow("Output image", outputImg);
waitKey(0);
destroyAllWindows();
return 0;
}
- Java实现
package app;
import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
public class Main
{
static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
public static void main(String[] args)
{
Mat inputImg = Imgcodecs.imread("test.jpg");
Imgproc.cvtColor(inputImg, inputImg, Imgproc.COLOR_BGR2GRAY);
Mat outputImg = new Mat();
Imgproc.Canny(inputImg, outputImg, 400, 500);
HighGui.imshow("Input image", inputImg);
HighGui.imshow("Output image", outputImg);
HighGui.waitKey(0);
HighGui.destroyAllWindows();
System.exit(0);
}
}
效果图:
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/17228.html