前言:之前关于jetsonnano的文章介绍了一些学习的思路和资料,今天继续分享一篇关于jetsonnano中opencv使用的文章。OpenCV的全称是OpenSourceComputerVisionLibrary,是一个跨平台的计算机视觉库。OpenCV由英特尔公司发起并参与开发。它是在BSD许可下发布的,可以在商业和研究领域免费使用。OpenCV可用于开发实时图像处理、计算机视觉和模式识别程序。在视觉处理中,opencv的使用是基础部分,所以在板子的使用过程中,opecv的使用是第一关。接下来给大家介绍一下在jetsonnano中使用opencv的python版和c++版的过程。c++使用部分会介绍cmake和makefile编译两种方法。oepcv简介:OpenCV的目标是为计算机视觉需要解决的问题提供工具。在某些情况下,库中的高级函数可以有效解决计算机视觉中的问题。即使对于无法一次性解决的问题,库中的基本组件也足够完整,可以增强解决方案应对任何计算机视觉挑战的性能。基本功能:opencv应用广泛,包括图像拼接、图像降噪、产品质量检测、人机交互、人脸识别、运动识别、运动跟踪、无人驾驶等。此外,它还提供了机器学习模块,可以使用NormalBayes、K近邻、支持向量机、决策树、随机森林、人工神经网络等机器学习算法。注:示例代码参考其他博主文章.opencv-python的使用:opencv-python的使用比较简单,importimportcv2,这样我们就可以使用opencv-python模块的功能来进行我们需要的操作,下面介绍一个比较简单的图片转换demo。opencv-python安装pip3installopencv-python示例代码:"""彩图转灰度图"""#import导入一个模块,每次使用模块中的函数时,必须指定是哪个模块。#from…import*导入模块,每次使用模块中的函数,都可以直接使用该函数;请注意,因为您已经知道该功能在该模块中fromskimage.colorimportrgb2gray#skimage图形处理库颜色是颜色空间Convertsubmodulepipinstallscikit-imageimportnumpyasnpimportmatplotlib.pyplotasplt#matlab的python库pipinstallmatplotlibfromPILimportImage#PythonImagingLibrary图像处理库pipinstallpillowimportcv2#imagegrayscale#cv2wayimg=cv2.imread("/home/lyn/Pictures/318c944a7daa47eaa37eaaf8354fe52f.jpeg")h,w=img.shape[:2]#获取高和宽img_gray=np.zeros([h,w],img.dtype)#创建与当前图像大小相同的单通道图像foriinrange(h):forjinrange(w):m=img[i,j]img_gray[i,j]=int(m[0]*0.11+m[1]*0.59+m[2]*0.3)#将BGR坐标转换为灰度坐标print(img_gray)print("imageshowgrap:%s"%img_gray)cv2.imshow("imageshowgray",img_gray)#pltmethodplt.subplot(221)#表示将整个图像窗口分为2行和2列,一个d当前位置为1.img=plt.imread("/home/lyn/Pictures/318c944a7daa47eaa37eaaf8354fe52f.jpeg")plt.imshow(img)print("----imagelenna-----")print(img)#grayscaleimg_gray=rgb2gray(img)plt.subplot(222)plt.imshow(img_gray,cmap="gray")print("-----图像灰度------")print(img_gray)#binaryimg_binary=np.where(img_gray>=0.5,1,0)print(“-----imge_binary-----”)print(img_binary)print(img_binary.shape)#plt方法plt.subplot(223)plt.imshow(img_binary,cmap='gray')plt.show()opencvc++使用:opencv-c++安装一般系统要使用opencv,我们需要到官网:https://opencv.org,下载相应的包,然后camke->make->makeinstall,直到编译好的opencv文件被安装到指定目录,但是在JetsonNano的镜像包中,预装了opencv4,版本是4.1以上的版本。我用命令查询后,我安装的opencv镜像的版本是4.1.1jetson@jetson-desktop:/usr/include/opencv4/opencv2$opencv_version4.1.1C++开发Opencv需要额外配置,先看看opencv文件位置的标题。在jetson中,opencv的头文件在/usr/include/opencv4/这个目录下,后面会写在编译好的链接文件中。链接文件位置:lslibopencv*具体路径为/usr/lib/aarch64-linux-gnu,这个目录后面也会写在编译好的链接文件中。在C++开发中,我们通常使用make工具或者cmake工具来帮助我们打包编译。这里我也给大家分享一下调用opencv的两个C++库makefle和cmake。makefileMakefile文件分享,注意这里LIBS链接的opencv链接的具体文件需要一一写上。这里我只是写了几个常用的包,大家可以根据自己的需要添加。OBJS=*.oCFLAGS=-Wall-g-std=c++11CC=gccCPP=g++INCLUDES+=-I/usr/include/opencv4/-I/usr/local/include#编译头文件目录LIBS+=-L/usr/lib/aarch64-linux-gnu-lopencv_core-lopencv_imgcodecs-lopencv_imgproc-lopencv_highgui-lopencv_objdetect#链接特定库目标:${OBJS}#g++-otargetboost_thread.o-llua-ldl@echo"--开始“${CC}${CFLAGS}${OBJS}-o$@${INCLUDES}${LIBS}$(CPP)${CFLAGS}${OBJS}-o$@${INCLUDES}${LIBS}clean:-rm-f*.ocore*.coretarget%.o:%.cpp#将src目录下的所有.cpp文件编译成.o文件${CPP}${CFLAGS}${INCLUDES}-c$
