Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование, OpenCV, C++, Visual Studio

Никита Маслов Ученик (119), на голосовании 1 неделю назад
Возникла такая проблема, установил версию OpenCV 4.6.0 и подключил в Visual Studio с указанием всех каталогов (вроде как ничего не забыл), но компилятор не видит функции cvLoadImage и cvSaveImage (пишет, что идентификатор не определён), помогите разобраться, пожалуйста!

#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;
}
Голосование за лучший ответ
Простой Человек Просветленный (20481) 1 месяц назад
cvSaveImage и cvLoadImage определены в заголовочном файле "opencv2/imgcodecs/imgcodecs_c.h"
https://docs.opencv.org/3.4/da/d0a/group__imgcodecs__c.html#gae2412bc5e976253abcce89bc1ee92ab6
То есть можно дописать #include "opencv2/imgcodecs/imgcodecs_c.h"
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;
}

Попробуй, должно работать
Похожие вопросы