【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

MATLAB2022b安装

图文并茂,手把手教会你怎么安装MATLAB2022b

1万+

【OpenCV学习】初识OpenCV其二

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

user_from_future的博客 2513

光谱分布、光谱辐射通量密度与不同时间段分布光谱(图示)

1、光谱分布图 2 太阳辐射能量图 3、不同时间段的太阳分布光谱图 4、不同波长的光的能量分布主要区域 5、不同波段的使用场景

maopig的专栏 2万+

HCIA-Storage 存储工程师学习笔记——1. 存储技术趋势

文章目录1. 存储技术趋势1.1 数据、信息与数据存储1.2 存储技术的发展①存储架构的发展②存储介质的发展③ 接口协议的发展1.3 存储产品的发展趋势 华为HCIA-Storage认证地址:https://e.huawei.com/cn/talent/#/cert/roadmap 1. 存储技术趋势 1.1 数据、信息与数据存储 什么是数据? ​ 数据是对所有事物的数字表示。 数据的种类? 结构化数据 半结构化数据 非结构化数据 数据的处理周期 ​ 数据处理是人或机器对数据进行的重组或重新排序,

超级大洋葱的博客 2847

[Opencv学习]1#初识Opencv

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

larko的博客 1089

macOS 27下PlayCover“没有权限打开”的完整修复指南

macOS系统通过Gatekeeper、TCC(透明、同意与控制)和安全启动等机制,对第三方应用进行层层校验,以防范恶意代码。这些机制会检查应用的隔离属性、签名状态以及所需系统权限,当任一环节不满足时,就会出现“没有权限打开”的提示。对于开发者工具或未上架App Store的开源软件,这类拦截尤为常见。尤其在macOS 27上,系统进一步收紧了绕过策略,导致PlayCover等工具无法正常启动。本文以PlayCover为例,详细解析权限链路上的三道关卡,并给出清除隔离属性、调整SIP状态、重置TCC记录等完

weixin_32612263的博客 753

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

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

移动的130 316

Win11下DCMTK的Visual Studio 2022配置教程

最近有个新需求,需要完成读取和解析DICOM数据相关的SDK

qq_45797625的博客 3262

基于Python的CT骨料图像分割与STL批量导出完整指南

本文介绍了一套完整的Python解决方案,用于CT骨料图像的分割与STL导出。针对CT图像中颗粒粘连、噪声伪影等技术难点,提出基于分水岭算法的分割策略,结合距离变换与标记控制实现颗粒分离。内容包括环境配置、数据读取与预处理、Otsu阈值分割、分水岭算法实现、表面提取与STL导出等关键步骤。教程提供详细代码及解释,帮助读者从CT体数据出发,最终生成每个颗粒的三维网格文件,便于后续定量分析和数值模拟。

huanghm88的专栏 240

openCV学习笔记一 —— 初识openCV

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

金手指三脚猫 902

记录Rancher集群中coredns问题导致的服务DNS解析超时

coredns问题处理

1360

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OpenCV学习(2.1) 初识图像

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

PLANTTHESON的博客 1183

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OpenCV学习笔记-初识轮廓

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

云中寻雾的博客 807

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【图像处理】初识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、付费专栏及课程。

余额充值