opencv(1)qtcreator下环境配置及常见问题

来源:互联网 发布:骷髅陷阱升级数据 编辑:程序博客网 时间:2024/06/16 16:19

opencv(1)qtcreator下环境配置及常见问题

标签(空格分隔): opencv


兜兜转转一年多,一直想学学opencv,无奈大家都是用cmakelist,我虽然也会编写一点,但是嫌太麻烦,每次想要写些简单的例程却想起来自己不会cmake语言,就只好搁浅
最后发现直接在qtcreator中修改.pro文件一样可行!
~(≧▽≦)/~啦啦啦
好像发现了新世界
到底是用c++还是python呢,这个问题实在是太纠结了。

.pro 对项目进行配置

1、建立console application

2、修改.pro文件

之所以想用.pro文件里设置,是因为它直接可以指定要使用的库。我的安装了多个版本的opencv,/usr/include里不知道安装什么的时候安装了opencv2.4.9,但是我需要opencv3.3,每次用cmakelist写的findopencv package 就会自动链接到opencv2.4.9的头文件,即使我设置了OpenCV_DIR为opencv3.3所在的文件夹,非常乱

INCLUDEPATH += /usr/local/opencv3.3/include \/usr/local/opencv3.3/include/opencv \/usr/local/opencv3.3/include/opencv2LIBS += -L/usr/local/opencv3.3/lib \        -lopencv_core \        -lopencv_highgui \        -lopencv_imgcodecs \        -lopencv_videoio

参考

3.显示图片

修改完配置文件后不要忘记对项目执行qmake!

#include "opencv2/core/core.hpp"#include "opencv2/imgcodecs/imgcodecs.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/videoio/videoio.hpp"#include <iostream>//using namespace cv;//using namespace std;int main(){  cv::Mat image=cv::imread("/home/lgy/workspace/tf/qt/untitled/lgy.jpg");  cv::namedWindow("lgy");  cv::imshow("lgy",image);  cv::waitKey(2000);  return 1;}

CMakelist.txt 进行配置

如下所示,即使我SET(OpenCV_DIR "/usr/local/opencv3.3/share/OpenCV") ,还是会发现#include "opencv2/highgui/highgui.hpp"的路径是usr/include
#include "opencv2/videoio/videoio.hpp"的路径是/usr/local/opencv3.3,目前还没有找好合适的解决方法

# cmake needs this linecmake_minimum_required(VERSION 2.8)# Define project nameproject(opencv_example_project)# Find OpenCV, you may need to set OpenCV_DIR variable# to the absolute path to the directory containing OpenCVConfig.cmake file# via the command line or GUISET(OpenCV_DIR "/usr/local/opencv3.3/share/OpenCV")find_package(OpenCV REQUIRED HINTS ${OpenCV_DIR} NO_DEFAULT_PATH )# If the package has been found, several variables willhighgui# be set, you can find the full list with descriptions# in the OpenCVConfig.cmake file.# Print some message showing some of themmessage(STATUS "OpenCV library status:")message(STATUS "    version: ${OpenCV_VERSION}")message(STATUS "    libraries: ${OpenCV_LIBS}")message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")# Declare the executable target built from your sourcesadd_executable(opencv_example example.cpp)# Link your application with OpenCV librariestarget_link_libraries(opencv_example ${OpenCV_LIBS})

python opencv

尝试在conda的虚拟环境pycharm_tf下使用opencv,结果发现第一个例子就运行不了,没法读取视频文件。
cv2.VideoCapture失效
参考aiz的回答,解决方案是用另一个python库skvideo.io来替代cv的这个函数,具体怎么使用这个库函数我还没研究过。以下代码错误

import numpy as npimport cv2import skvideo.iocap = skvideo.io.VideoCapture('/home/lgy/PycharmProjects/untitled/test.avi')while(1):    ret, frame = cap.read()    # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    cv2.imshow('frame',frame)    if cv2.waitKey(1) & 0xFF == ord('q'):        breakcap.release()cv2.destroyAllWindows()

用python获取摄像头的视频流倒是可以运行,参考python-opencv 3.0 tutorial中high-gui的使用

这几个例子都比较基础
相对而言,官方文档给出的c++的tutorail 对我这种基础的小白来说实在是太难消化了,短时间内get不了啊啊啊啊

每个版本的document/mainpage里都有opencv tutorial 和opencv python tutorial