opencv
किनारे का पता लगाना
खोज…
वाक्य - विन्यास
- किनारों = cv2। कैनी (छवि, थ्रेशोल्ड 1, थ्रेशोल्ड 2 [, किनारा [, एपर्चराइज़ करें [, L2gradient]]])
- शून्य कैनी (InputArray छवि, OutputArray किनारों, डबल थ्रेशोल्ड 1, डबल थ्रेशोल्ड 2, int एपर्चरज = 3, बूल L2gradient = false
पैरामीटर
पैरामीटर | विवरण |
---|---|
छवि | इनपुट छवि |
किनारों | आउटपुट छवि |
threshold1 | हिस्टैरिसीस प्रक्रिया के लिए पहली दहलीज |
threshold2 | हिस्टैरिसीस प्रक्रिया के लिए दूसरी सीमा |
एपर्चर आकार | Sobel ऑपरेटर के लिए एपर्चर का आकार |
L2gradient | यह दर्शाता है कि छवि ढाल के लिए अधिक सटीक एल्गोरिदम का उपयोग किया जाना चाहिए |
कैनी एल्गोरिथ्म
कैनी एल्गोरिथ्म एक और हाल का एज डिटेक्टर सिग्नल प्रोसेसिंग समस्या के रूप में डिज़ाइन किया गया है। OpenCV में, यह बाइनरी इमेज को चिन्हित किनारों को चिह्नित करता है।
अजगर:
import cv2
import sys
# Load the image file
image = cv2.imread('image.png')
# Check if image was loaded improperly and exit if so
if image is None:
sys.exit('Failed to load image')
# Detect edges in the image. The parameters control the thresholds
edges = cv2.Canny(image, 100, 2500, apertureSize=5)
# Display the output in a window
cv2.imshow('output', edges)
cv2.waitKey()
कैनी एल्गोरिदम - सी ++
नीचे c ++ में canny algorithm का उपयोग किया गया है। ध्यान दें कि छवि को पहले ग्रेस्केल छवि में बदल दिया जाता है, फिर गॉसियन फ़िल्टर का उपयोग छवि में शोर को कम करने के लिए किया जाता है। तब कैननी एल्गोरिथ्म का उपयोग एज डिटेक्शन के लिए किया जाता है।
// CannyTutorial.cpp : Defines the entry point for the console application.
// Environment: Visual studio 2015, Windows 10
// Assumptions: Opecv is installed configured in the visual studio project
// Opencv version: OpenCV 3.1
#include "stdafx.h"
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<string>
#include<iostream>
int main()
{
//Modified from source: https://github.com/MicrocontrollersAndMore/OpenCV_3_Windows_10_Installation_Tutorial
cv::Mat imgOriginal; // input image
cv::Mat imgGrayscale; // grayscale of input image
cv::Mat imgBlurred; // intermediate blured image
cv::Mat imgCanny; // Canny edge image
std::cout << "Please enter an image filename : ";
std::string img_addr;
std::cin >> img_addr;
std::cout << "Searching for " + img_addr << std::endl;
imgOriginal = cv::imread(img_addr); // open image
if (imgOriginal.empty()) { // if unable to open image
std::cout << "error: image not read from file\n\n"; // show error message on command line
return(0); // and exit program
}
cv::cvtColor(imgOriginal, imgGrayscale, CV_BGR2GRAY); // convert to grayscale
cv::GaussianBlur(imgGrayscale, // input image
imgBlurred, // output image
cv::Size(5, 5), // smoothing window width and height in pixels
1.5); // sigma value, determines how much the image will be blurred
cv::Canny(imgBlurred, // input image
imgCanny, // output image
100, // low threshold
200); // high threshold
// Declare windows
// Note: you can use CV_WINDOW_NORMAL which allows resizing the window
// or CV_WINDOW_AUTOSIZE for a fixed size window matching the resolution of the image
// CV_WINDOW_AUTOSIZE is the default
cv::namedWindow("imgOriginal", CV_WINDOW_AUTOSIZE);
cv::namedWindow("imgCanny", CV_WINDOW_AUTOSIZE);
//Show windows
cv::imshow("imgOriginal", imgOriginal);
cv::imshow("imgCanny", imgCanny);
cv::waitKey(0); // hold windows open until user presses a key
return 0;
}
कैनी थ्रेसहोल्ड की गणना
Opencv में कैनी ऑपरेशन के लिए कम और उच्च थ्रेसहोल्ड की स्वचालित गणना
वेब कैमरा कैप्चर से अजगर एज वीडियो - पायथन
import cv2
def canny_webcam():
"Live capture frames from webcam and show the canny edge image of the captured frames."
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read() # ret gets a boolean value. True if reading is successful (I think). frame is an
# uint8 numpy.ndarray
frame = cv2.GaussianBlur(frame, (7, 7), 1.41)
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
edge = cv2.Canny(frame, 25, 75)
cv2.imshow('Canny Edge', edge)
if cv2.waitKey(20) == ord('q'): # Introduce 20 milisecond delay. press q to exit.
break
canny_webcam()
ट्रैकबार्स का उपयोग करते हुए कैनी एज थ्रेसहोल्ड प्रोटोटाइप
"""
CannyTrackbar function allows for a better understanding of
the mechanisms behind Canny Edge detection algorithm and rapid
prototyping. The example includes basic use case.
2 of the trackbars allow for tuning of the Canny function and
the other 2 help with understanding how basic filtering affects it.
"""
import cv2
def empty_function(*args):
pass
def CannyTrackbar(img):
win_name = "CannyTrackbars"
cv2.namedWindow(win_name)
cv2.resizeWindow(win_name, 500,100)
cv2.createTrackbar("canny_th1", win_name, 0, 255, empty_function)
cv2.createTrackbar("canny_th2", win_name, 0, 255, empty_function)
cv2.createTrackbar("blur_size", win_name, 0, 255, empty_function)
cv2.createTrackbar("blur_amp", win_name, 0, 255, empty_function)
while True:
cth1_pos = cv2.getTrackbarPos("canny_th1", win_name)
cth2_pos = cv2.getTrackbarPos("canny_th2", win_name)
bsize_pos = cv2.getTrackbarPos("blur_size", win_name)
bamp_pos = cv2.getTrackbarPos("blur_amp", win_name)
img_blurred = cv2.GaussianBlur(img.copy(), (trackbar_pos3 * 2 + 1, trackbar_pos3 * 2 + 1), bamp_pos)
canny = cv2.Canny(img_blurred, cth1_pos, cth2_pos)
cv2.imshow(win_name, canny)
key = cv2.waitKey(1) & 0xFF
if key == ord("c"):
break
cv2.destroyAllWindows()
return canny
img = cv2.imread("image.jpg")
canny = CannyTrackbar(img)
cv2.imwrite("result.jpg", canny)
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow