Перейти к содержимому
Compvision.ru
Apostolkkk

Не подгружается библиотека Highgui в OpenCV в QT

Recommended Posts

Создал проект на Qt под OpenCV тестовый после подключения библиотеки, но проект не собирается и пишет ошибку при компиляции "undefined reference to 'cvloadimage' ", в *pro файле прописал следующие:
 

Код
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled2
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\
INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\opencv
INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\opencv2\
INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\opencv2\imgproc
INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\opencv2\highgui
LIBS+= -L\C:\OpenCV\opencv-master\build\lib\libopencv_highgui_pch_dephelp.a
LIBS+= -L\C:\OpenCV\opencv-master\build\lib\libopencv_highgui320.dll.a
LIBS+= -L\C:\OpenCV\opencv-master\build\lib\libopencv_imgproc320.dll.a

SOURCES +=

Исходник в main:
 

C++ (Qt)Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "mainwindow.h"
#include <QApplication>
#include <opencv/cv.h>
#include <cvv.hpp>
#include <stdlib.h>
#include <stdio.h>
#include <imgproc.hpp>
#include <highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
IplImage* image = 0;
 
int main(int argc, char *argv[])
{
    const char* filename = argc == 2 ? argv[1] : "1calib.png";
            // получаем картинку
            image = cvLoadImage(filename,1);
    QApplication a(argc, argv);
    MainWindow w;
 
 
    IplImage *img = cvLoadImage("1calib.png");
    cvNamedWindow("Hello, QT! From OpenCV!");
    cvShowImage("Hello, QT! From OpenCV!", img);
    cvWaitKey();
    w.show();
 
    return a.exec();
}

После прописки pro файла qmake запускал, но компилятор все равно не видит функцию.

Помогите разобраться с этой проблемой, а то я еще не начал даже разбираться с OpenCv а уже затык, на ровном месте.

Вот не много подправил pro файл ошибка та же


INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\
INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\opencv
INCLUDEPATH+=C:\OpenCV\opencv-master\build\install\include\opencv2\
LIBS+= C:\OpenCV\opencv-master\build\lib\libopencv_core320.dll.a
LIBS+= C:\OpenCV\opencv-master\build\lib\libopencv_highgui_pch_dephelp.a
LIBS+= C:\OpenCV\opencv-master\build\lib\libopencv_highgui320.dll.a
LIBS+= C:\OpenCV\opencv-master\build\lib\libopencv_imgproc320.dll.a

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Лучше использовать новый интерфейс функций OpenCV (Mat вместо IplImage, cv:: вместо cv, короче c++ ). 

Откройте стандартные примеры (папка samples) там достаточно кода чтобы понять что да как.

А не подключаться может либо из-за того что OpenCV построена без поддержки Qt, либо старые функции уже в другой либе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Построено с поддержкой Qt. А вот в другой Либе это скорее всего. Пока не могу найти в какой. А с Mat тоже пока не получается ошибки ошибки. Буду мучить и искать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Простейший пример:

#include "opencv2/opencv.hpp"
using namespace cv;

int main(int argc, char** argv)
{
	Mat img;
	img=imread("image.png",1);
	imshow("my image",img);
	waitKey();
	return 0;
}

А для вывод на форму посмотрите это: SimpleQTApp.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

пишет на простейший пример

undefined reference to `cv::imread(cv::String const&, int)`

и еще восемь подобных ошибок

указывают все 8, на строчку img=imread("image.png",1)

файл создал с таким именем и поместил в папку проекта

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавьте в библиотеки imgcodecs (у меня называется opencv_imgcodecs310.lib ).  Она была добавлена в третьей версии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сейчас тоже этим занимаюсь. Скорее всего разные версии qt и opencv.

32-х и 64-х битные. Проверьте.

А  КакSimpleQTApp - это для вижал студии?

Скажите как на форму qt выводить окно из opencv?

То есть каким образом вывести изображение на форму?

Можно на пиксмап?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Khludenkov сказал:

Скажите как на форму qt выводить окно из opencv?

То есть каким образом вывести изображение на форму?

Можно на пиксмап?

Бросаешь на форму GraphicsView

cv::Mat imagem; // загрузка картинки
img = new QImage((const unsigned char*)(imagem.data), imagem.colsimagem.rowsimagem.stepQImage::Format_RGB888); // Qt image structure
pixmap = new QPixmap(QPixmap::fromImage(*img));		
pPixmapItem = scene->addPixmap(*pixmap);
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо.

А если под размер подогнать надо?

Чем лучше? Средствами opencv resize()? Или в qt своими можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Khludenkov сказал:

 

А если под размер подогнать надо? Чем лучше? Средствами opencv resize()? Или в qt своими можно?

Я делал функциями QGraphicsView - fitInView, scale и translate.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×