代码编织梦想

(嵌入式小白学习记录)Ubuntu安装opencv及其简单应用

Part1:OpenCV的安装

Opencv的安装真的非常折磨人。本小白在安装的过程中主要参考了如下博客:
链接: https://blog.csdn.net/weixin_46129506/article/details/120646081
现就主要出现的几个报错及问题进行说明:

1.pkg-config无法正确连接到opencv

在下载解压好之后,配置路径好之后,运行pkg-config --modversion opencv时出现报错,提示pkg-config无法找到OpenCV。搜索解决方案后,在/usr/local/下自己创建了一个pkgconfig文件夹从而解决了问题。

2.gcc编译时include无法找到OpenCV下的头文件

在这里插入图片描述
在运行gcc test1.cpp -o test1 'pkg-config --cflags --libs --opencv时出现如上报错。

Part2: OpenCV简单实操:处理图片和视频

处理图片:

打开终端,运行nano test1.cpp 创建一个文件。
编辑如下代码:`#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
CvPoint center;
double scale = -3;

IplImage* image = cvLoadImage("lena.jpg");
argc == 2? cvLoadImage(argv[1]) : 0;

cvShowImage("Image", image);


if (!image) return -1; 	center = cvPoint(image->width / 2, image->height / 2);
for (int i = 0;i<image->height;i++)
	for (int j = 0;j<image->width;j++) {
		double dx = (double)(j - center.x) / center.x;
		double dy = (double)(i - center.y) / center.y;
		double weight = exp((dx*dx + dy*dy)*scale);
		uchar* ptr = &CV_IMAGE_ELEM(image, uchar, i, j * 3);
		ptr[0] = cvRound(ptr[0] * weight);
		ptr[1] = cvRound(ptr[1] * weight);
		ptr[2] = cvRound(ptr[2] * weight);
	}

Mat src;Mat dst;
src = cvarrToMat(image);
cv::imwrite("test.png", src);

cvNamedWindow("test",1);  	imshow("test", src);
 cvWaitKey();
 return 0;

在这里插入图片描述
然后,对test1.cpp进行编译:g++ test1.cpp -o test1pkg-config --cflags --libs opencv``
对于这句编译代码,它是如何获得opencv头文件,链接lib库文件的路径的呢?
都归功于pkg-config。它可以自动获得编译的预处理参数,如宏定义,头文件的位置。还可以获得链接参数,如库和依赖的其他库的位置,文件名和其他的一些参数。使用pkg-config时,选项–cflags 它是用来指定程序在编译时所需要头文件所在的目录,选项 --libs则是指定程序在链接时所需要的动态链接库的目录。

处理视频

第一步,需要在虚拟机上授权得到电脑摄像头的权限。这里略去过程,可参考博客链接:[https://blog.csdn.net/weixin_46129506/article/details/120646081]

第二步:编写一个test文件:
在这里插入图片描述
在Ubuntu中下载好一个视频,之后进行编译:

g++ test2.cpp -o test2 `pkg-config --cflags --libs opencv`

之后执行./test2 便可以看到视频结果
在这里插入图片描述

摄像头压缩

OpenCV还可以打开摄像头。首先,确保我们的虚拟机获得了摄像头权限。
编写一个test3.cpp
在这里插入图片描述
进行编译并执行后./test3可以发现打开了摄像头。space键进行录制,esc键停止录制。

Q&A:
1)如果要求打开你硬盘上一个视频文件来播放,请问示例代码1第7行代码如何修改?
答:可以修改为如下:VideoCapture capture; Mat frame; frame= capture.open("E:/image/a1.avi");

2)在示例代码1第9行的while循环中,Mat是一个什么数据结构? 为什么一定要加一句waitKey延时代码,删除它行不行?

答: Mat本质上是由两个数据部分组成的类: (包含信息有矩阵的大小,用于存储的方法,矩阵存储的地址等) 的矩阵头和一个指针,指向包含了像素值的矩阵(可根据选择用于存储的方法采用任何维度存储数据)。
waitKey的作用在于给程序一个判断用户按键触发的时间。如果用户在规定时间内没有按键,则跳出循环。waitkey的设置是有必要的,否则程序将会一直等待用户按键。

3)示例代码1代码会在while循环中一直运行,你如果试图用鼠标关闭图像显示窗口,会发现始终关不掉。需要用键盘Ctrl+C 强制中断程序,非常不友好。如何改进?
我认为可以在加一个if语句,如果延时函数在按Esc(ASCII码为27)的时候break就可以了。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/JJJean1/article/details/127019926

openvx嵌入式图像处理(一)硬件平台及软件介绍-爱代码爱编程

图像处理这几年可谓是大红大紫了一番,尤其是OpenCV的出现让很多之前只有研究者才能使用的算法变成了小白装个库调用个函数就可以解决的问题。但是实时性一直以来都是一个非常头疼的问题,尤其是在嵌入式平台上进行图像处理的门槛一直以

树莓派3代b型学习笔记-系统安装、修改分辨率、中文输入法-爱代码爱编程

之前用的都是stm32做的嵌入式开发,但是stm32的性能毕竟有限,F1的主频才72M,F4的也就200M。最近想用摄像头搞些东西涉及到摄像头标定,自己弄太复杂,就想依赖opencv的库函数,但是用stm32的IDE也结合不了opencv,就想弄弄树莓派,使用linux+opencv做一些机器视觉方面的东西,但是树莓派和opencv以及python都没用过

嵌入式小白到大神学习全攻略(学习路线+课程+学习书籍+练习项目)_qf _web的博客-爱代码爱编程

文章较长,希望耐心阅读,读完相信会对你的学习一定有帮助~ 嵌入式工程师需要掌握的内容非常广泛,嵌入式可以说是当下最有前途的IT应用领域,小到电子词典、手机,大到航空航天设备都是典型的嵌入式系统,因此,通过嵌入式技术人才的职

01--迅为4412-linux-arm板上opencv移植--终极解决方案(原创)_「已注销」的博客-爱代码爱编程_4412移植opencv

—本人由于需要做嵌入式图形处理,需要用到opencv。网上的移植教程倒是很多,但是几乎没有可以正常使用的。 作者经过大量尝试,最后发现,网上的文章,原创作者漏掉了极其非常关键的“glibc”库问题的描述,原创作者的文件系统可

小白入坑Linux嵌入式ARM的苦逼历程(一)-爱代码爱编程

小白入坑Linux嵌入式ARM的苦逼历程(一) 起源:单片机之战彷徨:何去何从机遇:重拾方向入坑:脱发危机总结:菜鸟展翅 起源:单片机之战 本小白本科专业机电一体化,大二暑假第一次在学长那听到“单片机”这个东西,大三买了人生第一块51开发板,通过学习宋雪松老师的《手把手教你学51单片机》这本书,用51单片机做了几个小项目,算是入门单片机了吧。

在源码中寻找opencv3.4.1的自动曝光设置历程-opencv-爱代码爱编程

由于项目需要,我在使用oepncv3.4.1调用摄像头的时候,需要设置摄像头的曝光值。本以为opencv会有很简单的方式或者接口供我调用直接实现,不曾想这么一个小需求却折腾了我一整周。 这篇文章,其实定稿也已经很长一段时间了。由于所处公司领域的原因,身为嵌入式工程师的我对于opencv这么一个图像处理库接触颇深(最近更是由于疫情期间人手不足的原因,

【全面】人工智能技术栈与学习路线:机器学习 深度学习 视觉 NLP 推荐系统-爱代码爱编程

文章目录 一 概述(本文原创)二 人工智能编程语言/数据结构与算法三 人工智能基础原理四 智能信息获取(简称爬虫) 与数据分析1、发起请求3、解析内容4、保存数据二、Requests库介绍2.1基本介绍requests的基本使用流程三、selenium四:效率问题五:资源浪费六:能被识别七、scrapy框架八、Bs4整体使用步骤九、字段匹配方案十:

ubuntu16.04服务器配置pl-slam环境-爱代码爱编程

配置PL-SLAM环境 (这是一篇失败的教程,卡在了MRPT安装,后来就没尝试了,写下来就当碎碎念了) 根据PL-SLAM的GitHub一步步配置。 服务器环境:Ubuntu 16.04.6,cuda 10.1 一、OpenCV 3.xx 教程:ubuntu16.04安装opencv3.4.1教程 到第10步, sudo ldconfig

新手小白尝试嵌入式程序调试与opencv图像库-爱代码爱编程

声明:新手入门,不完全靠谱历程,不具备教程水平,慎重参考阅读 文章目录 一、在Ubuntu系统上练习程序代码的GDB调试1、GDB简介2、GDB的使用二、学了opencv,妈妈再不担忧你不会图像编程啦!”1、在Ubuntu16/18系统下安装 Opencv3.x2、编译练习——打开图片进行特效显示3、练习使用opencv库编写打开摄像头压缩视频的程序

Jetson Xavier NX安装opencv3.4.5(小白教程)-爱代码爱编程

作为小白,近期开始上手嵌入式设备Jetson Xavier NX,系统为Ubuntu 18.04.6,而因项目开发环境需要Opencv3.4.5版本,预装系统内安装的是Opencv4.1.1,以下是本人结合网上的资料整理的一篇适合新手的环境配置opencv-3.4.5的文章,内有纰漏可私聊交流。 如有侵权,联系删除。 详细指令步骤可以参考下面这位老哥的

jetson tx2开发深度学习项目笔记(jetpack4.5.1,cuda10.2版本)_陈先森的研究生活的博客-爱代码爱编程

Jetson TX2开发深度学习项目笔记(Jetpack4.5.1,cuda10.2版本) 一、刷机 PyTorch for Jetson - version 1.11 now available - Jetson &a

跟女友旅游三天,多亏python治好了我的精神内耗_代码输入中...的博客-爱代码爱编程

前阵子请了年假,陪女朋友出了趟远门,一路心情愉悦景色宜人,不过累也是真的累,尤其在几天都没休息好还要一路颠簸回到家之后。 谁想到前脚刚踏回家门的我,刚准备休息,就收到了这样的消息: 把图片逐一保存,没想到她四天功夫竟然拍了小两百张照片… 这就有点让我为难了,首先我现在的工作不需要切图,PS也早就卸载了,其次就算有PS,光是给几百张图套上预设也

ubuntu下安装opencv4.6.0并使用_终极末影龙的博客-爱代码爱编程

目录 什么是OpenCV安装OpenCV1.下载安装包2.解压缩3.下载CMake并完成配置4.下载依赖5.编译并安装6.OpenCV环境配置 代码示例图片处理视频处理虚拟机获取摄像头权限播放视频摄像头录制

使用opencv快速解决迷宫问题_小白学视觉的博客-爱代码爱编程

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 联系小编,可以获取该项目的Github源码哦https://github.com/Mnchr2018/Maze_Solution 最近,我们尝试了用相机解决迷宫问题。本文将向大家介绍我们实现该功能的具体流程。 项目主要需求的数据: 数据集:数几百个不同大小、质量、颜