Danchick
Ученик
(219)
1 месяц назад
#include <opencv2/opencv.hpp>
int main()
{
// Загрузка изображения
cv::Mat img = cv::imread("lena.jpg", cv::IMREAD_COLOR);
if (img.empty()) {
std::cerr << "Ошибка: не удалось загрузить изображение!" << std::endl;
return -1;
}
// Создание 8-битного изображения для градаций серого
cv::Mat img_gray;
cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY); // Перевод из полноцветного в градации серого
// Применение оператора Собеля
cv::Mat img_gray2;
cv::Sobel(img_gray, img_gray2, CV_16S, 1, 0);
cv::imwrite("SobelX.jpg", img_gray2); // Сохранение результата
cv::Sobel(img_gray, img_gray2, CV_16S, 0, 1);
cv::imwrite("SobelY.jpg", img_gray2); // Сохранение результата
// Применение оператора Кэнни
cv::Mat img_canny;
cv::Canny(img_gray, img_canny, 50, 100, 3);
cv::imwrite("Canny.jpg", img_canny); // Сохранение результата
// Применение оператора Лапласа
cv::Mat img_laplace;
cv::Laplacian(img_gray, img_laplace, CV_16S, 3);
cv::Mat img_laplace_converted;
img_laplace.convertTo(img_laplace_converted, CV_8U); // Преобразование в 8-битное изображение
cv::imwrite("Laplace.jpg", img_laplace_converted); // Сохранение результата
return 0;
}
Попробуй, должно работать
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/core/core_c.h"
#include "opencv2/imgproc/imgproc_c.h"
int main()
{
IplImage* img = cvLoadImage("lena.jpg", 1); // Загрузка изображения
IplImage* img_gray = cvCreateImage(cvGetSize(img), 8, 1); // Создание 8-битного изображения
IplImage* img_gray2 = cvCreateImage(cvGetSize(img), 8, 1);
cvCvtColor(img, img_gray, CV_BGR2GRAY); // Перевод из полноцветного в градации серого
cvSobel(img_gray, img_gray2, 1, 0);
cvSaveImage("SobelX.jpg", img_gray2);
cvSobel(img_gray, img_gray2, 0, 1);
cvSaveImage("SobelY.jpg", img_gray2);
cvCanny(img_gray, img_gray2, 50, 100, 3);
cvSaveImage("Canny.jpg", img_gray2);
IplImage* img16 = cvCreateImage(cvGetSize(img), IPL_DEPTH_16S, 1);
cvLaplace(img_gray, img16, 3);
cvConvertScale(img16, img_gray2);
cvSaveImage("Laplace.jpg", img_gray2);
return 0;
}