【OpenCV学习】初识OpenCV

图片分割和图片合成(大图切割成小图,python代码) 目录 分割 拼接 由于后面要进行图片的分割,所以就先做了一些准备。 要分割的图片如下: 分割 思路也比较简单,代码注释比较详细,看代码就行。 from cv2 import cv2 import numpy as np pic_path = 'd:/Python/cut_pic/picture/3_result.jpg' # 分割的图片的位置 pic_target = 'D:/Python/cut_pic/result/' # 分割后的图片保存的文件夹 #要分割后的尺寸 cut_wid 阅读详情

🌈据说,看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:OpenCV从入门到放弃 ,一个学习OpenCV的专栏~

人生苦短,我用python

安装 OpenCV

博主学习的是通过虚拟环境来学习 OpenCV ,使用 3.4.1.15 这个版本。因为在 3.4.2 版本之后有些算法申请了专利,就用不了。
但 3.4.1.15 这个版本目前最高只支持到 Python3.6 ,博主就另外又安装了 Python3.6.8 作为学习 OpenCV 使用。

在 opencv-python 模块的下载页面查找,可以明显发现其 3.4.1.15 版本只支持 Python2.7 、 Python3.4 、 Python3.5 、 Python3.6 这些版本,我们能挑到的最高版本是 Python3.6.8 。
在这里插入图片描述

在官网 Python官网下载 中找到 Python3.6.8 版本。
在这里插入图片描述

先创建并进入虚拟环境:先要使用 Python3.6.8 安装 pip install virtualenv ,才能创建虚拟环境,然后进入环境的 Scripts 目录,输入 activate 激活当前环境,出现 (OpenCV) 就代表成功进入当前环境了。
然后安装需要的一些模块:pip install opencv-python==3.4.1.15 opencv--contrib-python==3.4.1.15 jupyter matplotlib -i https://pypi.douban.com/simple。
其中 opencv-python 是 OpenCV 的核心库,另外的 opencv–contrib-python 是拓展库,前期可以先不安装拓展库,然后 jupyter 是网页编辑器,方便可视化, matplotlib 就是可视化库了,图像处理好后可以使用它可视化到 jupyter 的网页上。
安装成功显示:
在这里插入图片描述

安装成功后,pip list 显示的模块。
在这里插入图片描述
在这里插入图片描述

启动 Jupyter

确保我们现在仍然在 Scripts 文件夹内,然后输入 jupyter notebook --notebook-dir='G:/opencvStudy/note' 以指定目录打开 jupyter 网页编辑器,出现类似图下的网页就属于启动成功了(文件列表可能不一样):
在这里插入图片描述

Jupyter 有一些常用的快捷方式:

  • 直接 Enter 只会回车。
  • Ctrl + Enter 将会执行当前单元格。
  • Shift / Alt + Enter 将会执行当前单元格,并在下方新建一个单元格。
  • 在函数处按 Shift + Tab 可以显示简易帮助说明,按两下 Tab 可以显示详细帮助。

创建和销毁窗口

每次使用前,需要导入:

  • import cv2 :可以直接使用,但其 3.4.1.15 版本在 PyCharm 中将不会提示语法:在这里插入图片描述
  • 但如果使用 from cv2 import cv2 :这种导入方法,在 PyCharm 中是可以显示代码提示的(纯手敲大佬请无视此区别):在这里插入图片描述

具体情况还是得看你使用的是哪款编辑器,以及你是否是大佬~

from cv2 import cv2
# 创建窗口。
cv2.namedWindow('window', cv2.WINDOW_NORMAL)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

可以看到有三组共六钟参数,被分同一组的是由0和其他数字组成的 flags 。
其中 WINDOW_AUTOSIZE 和 WINDOW_NORMAL 表示是自动调整大小(手动不可调)或是手动调整窗口;
WINDOW_FREERATIO 和 WINDOW_KEEPRATIO 表示在调整的时候不考虑图像比例(铺满窗口)或是保持图像比例,ratio 就是比例的意思;
WINDOW_GUI_NORMAL 和 WINDOW_GUI_EXPANDED 表示绘制窗口是就方法(没有状态栏和工具栏)或是增强型GUI。(目前我还没看出来新方法哪里增强了)

from cv2 import cv2
# 创建窗口。
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
# 更改窗口的大小。
cv2.resizeWindow('window', 800, 600)

更改窗口大小是先宽后高。

from cv2 import cv2
# 创建窗口。
cv2.namedWindow('window', cv2.WINDOW_NORMAL)
# 更改窗口的大小。
cv2.resizeWindow('window', 800, 600)
key = cv2.waitKey(0)
if key == ord('q'):
    print('销毁窗口')
    cv2.destroyAllWindows()

waitKey 接受一个毫秒参数,如果参数为非正整数,就一直等下去,如果指定了正整数(只能接受整数,浮点数会报错),则会等待这么长时间,如果没有等待到按键,则退出等待并返回 -1 。
如果等待到了按键,则会返回按键的 ascii 码值(一个整数值),ord('') 就是返回字符的 ascii 码值:
在这里插入图片描述
也只会接受 ascii 码表里的按键,像 Ctrl 、 Shift 、 Alt 这些就不会接收了,而且这些都是功能键,单独接收没有意义。

图片在 OpenCV 中的表现

首先读取的图片类型支持下图中的这些:

在这里插入图片描述

from cv2 import cv2
# 默认是按照彩色图片来读取的。
cat = cv2.imread('./cat.jpeg')
# numpy的ndarray。
print(cat)

读取出来是一个三维数组:

在这里插入图片描述
这里正好说明一下 numpy 的数组形状和 cv2 的有什么不同:
cv2 的参数都是先给宽,再给高;
numpy 的参数都是先给高,再给宽,因为三维数组的格式化打印,
是最外层数组是由多行组成,相当于是图片的高;
中间层数组每个是由多列组成,相当于是图片的宽。
然后颜色 R 、G 、B 都是由 0 - 255 的数组成的,换算成无符号位的二进制是 00000000 - 11111111,所以 opencv 读取出来的彩色图片会被处理成类型是uint8(8位二进制整数)的三维数组。

再来看看 matplotlib 对它的显示效果:

在这里插入图片描述
再看看原图:

在这里插入图片描述
是不是发现这个猫有明显的颜色变化?
这是因为 opencv 读进来的图片数据的通道不是默认的RGB,而是BGR,完全相反的颜色数组,要想正常显示,可以对数组的最内层施加反向操作:

from cv2 import cv2
import matplotlib.pyplot as plt
# 默认是按照彩色图片来读取的。
cat = cv2.imread('./cat.jpeg')
# numpy的ndarray。
for row in range(len(cat)):
     for col in range(len(cat[row])):
         cat[row][col] = cat[row][col][::-1]
plt.imshow(cat)
plt.show()

经过这样处理后的颜色就正常了,可爱的猫咪又出现了~:
在这里插入图片描述

Python 常见问题 之 from .cv2 import * ImportError: numpy.core.multiarray failed to import Python 常见问题 之 from .cv2 import * ImportError: numpy.core.multiarray failed to import 目录 Python 常见问题 之 from .cv2 import * ImportError: numpy.core.multiarray failed to import 一、简单介绍 二、问题描述 三、分析原因,解决问题 原因分析: 解决方法: 一、简单介绍 Python是一种跨平台的计算机... 阅读详情

相关推荐

解决pip安装opencv遇到的from .cv2 import * ImportError: DLL load failed: 找不到指定的模块>>>问题(亲测)

报错如下: 倔强青铜 折腾了好久,了解到一个原因是python版本与opencv版本不匹配导致找不到模块,所以从清华的镜像 https://pypi.tuna.tsinghua.edu.cn/simple/opencv-python/ 中下载其他版本的库,因为电脑里python是3.6.10版本的,所以下载了opencv_python-3.2.0.7-cp36-cp36m-win_amd64.whl版本的opencv pip install 绝对路径/opencv_python-3.2.0.7-cp36-cp36m-win_amd64.whl 但是pip时还是报错显示找不到与之匹配的版本,

OpenCV4-python 学习程序 之 图像处理基础

1 图像的分类 1.二值图像 : 仅包含黑色和白色两种颜色,每个像素点只使用一个bit位即可表示,实际上在OpenCV中最小的数据类型为无符号的8位数,故而实际上二值图像是特殊的灰度图像 2.灰度图像 : 灰度图像仅有黑白两种颜色,故而不够细腻,损失了很多细节,通常计算机会将灰度处理为256个灰度级用数值区间[0,255]来表示。其中,数值[255]表示纯白色,数值[0]表示纯黑色,每个像素点占用...

k903161661的博客 1012

jmeter5.4.1 使用案例

jmeter主要用于接口压力测试,模拟海量请求并发访问接口 1.下载jmeter https://jmeter.apache.org/download_jmeter.cgi 2.启动jemter 双击即可 3.配置jmeter 1.先更改语言 2.创建线程组 配置线程执行规划 3.创建http请求默认值 4.创建http请求 5.创建http信息头管理器 指定 Content-Type:application/json 6.创建响应断言 7.创建察看结果数 直接点击 执行 按.

SpringHASh的博客 1222

【OpenCV学习】初识OpenCV其二

初识OpenCV其二 保存图片 采集摄像头视频 视频录制 鼠标检测 trackbar

user_from_future的博客 2513

fsQCA实战:从数据校准到结果解读的完整流程(附R代码示例)

本文提供了一份完整的模糊集定性比较分析(fsQCA)实战指南,详细阐述了从数据校准、必要条件分析、真值表构建到布尔最小化与结果解读的全流程。通过R语言代码示例,帮助研究者掌握如何将理论转化为可操作的分析步骤,并产出稳健的中间解,以揭示导致结果的复杂条件组合。

d6e7f8g9h的博客 1181

解决/usr/lib64/libstdc++.so.6和/lib64/libc.so.6版本过低问题

在CentOS7.0中编译好MySQL5.7.14之后,然后在CentOS6.5中初始化MySQL,执行:/usr/local/mysql/bin/mysqld --version出现如下问题:./bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./bin/mysqld)

poxiaonie的博客 2万+

[Opencv学习]1#初识Opencv

说明:基于《Opencv图像处理入门与实践》的学习内容记录。

larko的博客 1089

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

【OpenCV学习笔记01】- 初识OpenCV

个人对于机器学习感兴趣,尤其是图像方面,所以才开始接触并且学习OpenCV。具体的介绍可以自己点击链接去官网的文档看一下。

移动的130 316

使用SSE流式输出(Javaweb前后端实战)

SSE(Server-Sent Events)是一种在Web应用中实现单向实时通信的技术。通过SSE,服务器可以主动向客户端发送更新,而无需客户端不断发起请求。这对于需要实时更新的应用场景(如聊天应用、实时数据监控等)非常有用。(服务端单向传输客户端,长连接)

记得开心一点嘛的博客 1万+

实用指南:制作通用的INCA和CANape兼容A2L文件

A2L(ASAM MCD-2 Measurement and Calibration Data)文件是描述ECU(电子控制单元)测量和校准数据的标准文件格式。在标定工作中,A2L文件扮演着极为重要的角色,它定义了测量通道、校准参数等关键信息,为工程师提供了统一的描述方式。INCA和CANape是两种常见的汽车电子系统标定工具,分别由ETAS和Vector公司开发。它们在汽车电子系统的开发和调试过程中发挥着重要作用,提供了丰富的标定功能和用户友好的界面。

一直在水些技术小文 2924

openCV学习笔记一 —— 初识openCV

OpenCV 是一个广受欢迎的开源计算机视觉库,它提供了很多函数,实现了很多计算机视觉算法,算法从最基本的滤波到高级的物体检测皆有涵盖。

金手指三脚猫 902

基于matlab目标雷达横截面建模(附源码)

雷达系统依靠目标反射或散射来检测和识别目标。目标反射越强,雷达接收器返回的回波就越大,从而获得更高的信噪比(SNR)和更高的检测可能性。在雷达系统中,从目标反射的能量由雷达横截面(RCS)决定,定义为sigma代表RCS,R是雷达与目标之间的距离,Es是从目标反射的信号的场强,以及Ei是入射到目标上的信号的场强。通常,目标向各个方向散射能量,RCS是入射角,散射角和信号频率的函数。RCS 取决于目标的形状和构建目标的材料。用于RCS的常用单位包括平方米或dBsm。

珞瑜的博客 3085

Learning OpenCV 第三章:初识OpenCV学习总结

【注】不同的OpenCV版本会有所不同。OpenCV的基本数据类型结构成员意义CvPointint x, y 图像中的点CvPoint2D32ffloat x, y二维空间中的点CvPoint3D32fffloat x, y, z三维空间中的点CvSizeint width, height图像的尺寸CvRectint x, y, width, height图像的部分区域CvScalardouble...

SweetWind1996的博客 545

【人工智能之深度学习】23. 推荐系统升级实战:LightGCN重构协同过滤全流程(Amazon-Beauty数据集+完整代码)

摘要:传统协同过滤(如矩阵分解)在电商推荐中存在三大痛点:忽略用户-物品高阶关联、交互数据稀疏导致冷启动、特征工程依赖人工设计。本文基于Amazon-Beauty数据集(含20万+用户交互),用LightGCN图神经网络重构推荐系统:1)构建用户-物品二部图,通过3层图卷积捕捉“用户→物品→用户”的多跳关联;2)采用BPR负采样损失优化嵌入学习,缓解数据稀疏;3)端到端输出用户/物品嵌入,无需人工特征。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1494

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OpenCV学习(2.1) 初识图像

输出的image0没有打印出来,太长了,不过可以从shape中看到是(861,697,3),代表的是长和宽以及通道数;image1是指定了长的位置,显示的是长为序列【0】时宽以及三个通道上的数值,对应的形状就是(697,3);image2就是选定了长和宽的位置,显示的是在该位置上的三个通道的数值,对应形状就是(3,);灰度化的目的是降低图像的复杂度,减少处理的计算量,同时保留图像的主要特征和结构。举个例子,通常来说的分辨率,1080P,720P,480P就是指像素的数量,数量越多就越清晰。

PLANTTHESON的博客 1183

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OpenCV学习笔记-初识轮廓

一、什么是轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。 1、为了更加准确,要使用二值化图像。在寻找轮廓之前,在进行阈值化处理或者canny边界检测。 2、查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。 3、在OpenC...

云中寻雾的博客 807

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【图像处理】初识opencv学习笔记

opencv学习笔记

liyiran_的博客 408

opencv 学习: 03 初识 cv:Mat

OpenCV中的cv::Mat数据结构是图像处理的核心,它表示一个像素矩阵,包含了图像的所有信息。Mat对象分为属性部分(如尺寸、通道数)和数据块(像素数据本身)。该数据结构采用引用计数机制管理内存,通过显式调用copyTo()或clone()实现深拷贝,而默认赋值操作仅进行浅拷贝。本文通过代码示例展示了Mat的基本操作:读取图像、灰度转换、数据类型转换、图像创建和拷贝等,重点阐述了Mat的内存管理机制及其对图像处理效率的影响。掌握Mat数据结构特性是进行高效图像处理编程的关键。

每天进步一点点 615

OpenCV SIFT特征学习:(一)初识SIFT

SIFT  (Scale Invariant Feature Transform)         sift,尺度不变特征,通过检测空间域与尺度域上的局部极大值作为特征,常于图像特征匹配,应用领域为目标识别(匹配),图像融合,图像拼接,图像检索等。假设对一幅图像进行sift特征提取,得到N个sift特征点,每个sift特征点的存储结构为128维的向量,则该图像的sift特征描述为N*12

lyt1992的专栏 4243

opencv 学习: 02 初识图片处理

本文介绍了OpenCV图像处理的基本流程和简单操作。主要内容包括: 图片处理三步骤:读取图片(imread)、处理图片(flip等操作)、输出图片(imwrite) 图片显示与窗口事件处理:使用imshow显示图片,并通过setMouseCallback设置鼠标事件回调函数 简单图形绘制:演示了putText、circle、rectangle、line等基本绘图函数的使用 示例代码展示了完整的图片处理流程,包括读取图片、显示窗口、添加鼠标交互、图像翻转处理、结果显示和保存等功能,为OpenCV初学者提供了一

每天进步一点点 177

【图像处理】初识opencv学习笔记 2

opencv学习笔记2

liyiran_的博客 281

opencv学习笔记(二):初识HighGUI

图像的输入输出,显示,鼠标操作,滚动条操作

youknow_zh的博客 238

【opencv_python学习之二】图像处理初识

0、背景介绍 在本篇文章中所有示例所处理的图片为下图0.1,图片名字为a.png。 图 0.1 下图0.2, 图片名字为b.png 图 0.2 下图0.3, 图片名字为c.png 图 0.3 1、获取并修改某点RGB值 1.1、获取某点RGB值 1.1.1、代码示例 代码: 1.1.py import cv2 import numpy as np # 读取图片a.png img = c...

weixin_34315485的博客 228

OpenCV人工智能图像处理学习笔记2 opencv初识图片保存像素理解

图形的分类与识别 http://www.image-net.org/ 导入模块要点击运行,不然点击table键就没有提示。 import tensorflow as tf hello = tf.constant("hello tf") sess = tf.Session() print(sess.run(hello)) tensorflow模块运行,安装正确。 Op...

moonlightpeng的博客 641

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

龚建波 802
上一篇: 【网页制作】jQuery制作动态指针钟表
下一篇: 【网页制作】原生JavaScript制作汉字时钟
user_from_future
博客等级 码龄5年 4067粉丝 115原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值