![](https://img-blog.csdnimg.cn/20200817232113969.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenCV
文章平均质量分 64
OpenCV的学习分享
龚建波
熟悉C++ Qt,Python等
展开
-
记录:VS2019+OpenCV4.7.0编译
OpenCV官网提供了动态库的安装包,但是只有64位(编译参数可能是默认的/MD+动态链接),如果需要32位或者静态链接还是得自己编译。原创 2023-06-09 00:17:27 · 3203 阅读 · 0 评论 -
cv::Mat与QImage的互相转换
OpenCV 的 cv::Mat 和 Qt 的 QImage 的转换很简单,网上也很多参考,这里只是记录一下。转换的时候除了要关注构造参数中的图像宽高、存储精度、通道数和通道顺序外,大小端也需要注意。如 QImage::Format_ARGB32 是用 32 位整形存储一个像素,虽然写的是 ARGB 顺序,但是由于存储大小端的关系,PC 一般小端存储,所以字节顺序成了 BGRA。直接通过数据指针构造 QImage 是复用的原来的内存,要注意释放顺序,也可以 copy 拷贝一份,cv::Mat 同理。原创 2022-08-30 01:35:29 · 7554 阅读 · 9 评论 -
OpenCV3学习笔记(8):基本绘图
参考文档:https://docs.opencv.org/3.4.11/d6/d6e/group__imgproc__draw.html参考教程:https://www.w3cschool.cn/opencv/opencv-fpo82ccc.html0.准备工作Point 表示一个2D坐标点Point pt;pt.x = 10;pt.y = 8;Point pt=Point(10,8);Rect 表示一个矩形区域Rect rect=Rect(0,0,100,100); /原创 2020-09-08 15:59:12 · 390 阅读 · 0 评论 -
OpenCV3学习笔记(7):图像混合,addWeighted()
0.图像混合通过addWeighted函数,可以将两张大小和通道相同的图片按照一定比例混合到一起,所有的比例之和为1。void cv::addWeighted( InputArray src1, //图片1 double alpha, //混合比例 InputArray src2, //图片2,其大小和通道与1相同 double beta, //混合比例 double gamma, //偏差,每次计算加上该值 OutputArray dst, //输出图原创 2020-09-08 00:28:16 · 423 阅读 · 0 评论 -
OpenCV3学习笔记(6):图像卷积操作,filter2D()
0.数字图像处理中卷积数字图像是一个二维的离散信号,对数字图像做卷积操作其实就是利用卷积核(卷积模板)在图像上滑动,将图像点上的像素灰度值与对应的卷积核上的数值相乘,然后将所有相乘后的值相加作为卷积核中间像素对应的图像上像素的灰度值,并最终滑动完所有图像的过程。这张图可以清晰的表征出整个卷积过程中一次相乘后相加的结果:该图片选用3*3的卷积核,卷积核内共有九个数值,所以图片右上角公式中一共有九行,而每一行都是图像像素值与卷积核上数值相乘,最终结果-8代替了原图像中对应位置处的1。这样沿着图片一步长原创 2020-09-06 16:13:18 · 1964 阅读 · 0 评论 -
OpenCV3学习笔记(5):阈值化操作,threshold()和adaptiveThreshold()
(注:本文使用OpenCV3进行学习)0.前言阈值化操作在图像处理中是一种常用的算法,比如图像的二值化就是一种最常见的一种阈值化操作。OpenCV中提供了直接阈值化操作cv::threshold()和自适应阈值化操作cv::adaptiveThreshold()两种接口,本文学习下基本的使用。主要参照:https://blog.csdn.net/guduruyu/article/details/68059450参照博客:https://docs.opencv.org/master/d7/d1原创 2020-08-31 00:05:23 · 946 阅读 · 0 评论 -
OpenCV3学习笔记(4):初识ROI
ROI(region of interest),直译感兴趣区域,即图像需要操作的的部分区域。1.一个矩形区域最简单的是从一个Mat得到一个矩形区域,然后进行操作。先创建一个白色的400*400图像:Mat image = Mat(400, 400, CV_8UC3, Scalar(255, 255, 255));取左上角200*200区域,可以用重载的 () 操作符,或者构造函数等://Mat重载了()操作符:Mat cv::Mat::operator() (const Rect原创 2020-08-24 23:12:16 · 515 阅读 · 0 评论 -
OpenCV3学习笔记(3):认识Mat类及其创建
1.认识Mat类早期的OpenCV中,图像的处理是通过IplImage的C语言结构。从OpenCV2.0开始用C++重新实现,引入Mat类使用引用计数的方式管理内存。Mat类由两部分组成:矩阵头(包含矩阵的大小,存储类型,存储地址等信息),以及一个包含像素值的内存块。矩阵头大小是恒定的,矩阵数据本身的大小可以随着图像的不同而变化。Mat类使用引用计数系统,每个Mat对象都有自己的头,但是可以指向同一个内存地址,使矩阵数据可以在两个Mat实例之间共享(参照智能指针)。使用赋值操作符只会将头和数据指针复原创 2020-08-24 00:37:57 · 644 阅读 · 0 评论 -
OpenCV3学习笔记(2):图像的读取保存及颜色空间转换
学习 OpenCV 从显示第一张图片开始。cv::imread 读取图片;cv::imwrite 保存到文件;cv::imshow 显示到窗口;cv::cvtColor 色彩空间转换,如彩色转为灰度图。原图:效果图:#include <iostream>#include <opencv2/opencv.hpp>using namespace cv;int main(int argc, char** argv){ //【】读取 //原创 2020-08-18 23:21:31 · 1027 阅读 · 0 评论 -
OpenCV3学习笔记(1):给透明的PNG图加背景色
原图:imgshow直接显示带透明的PNG原图:叠加到一个黑色背景图上效果:过程及相关函数的说明写在代码里了,思路就是用PNG的alpha通道作掩码贴到背景图上。#include <iostream>#include <vector>#include <opencv2/opencv.hpp>using namespace cv;int main(int argc, char** argv){ //这是我本地带透明区域的png图原创 2020-08-18 22:15:00 · 1500 阅读 · 0 评论