在 Python 中使用 OpenCV 模块对图像进行基本操作
问题陈述
📌 使用 Python 代码自己创建图像
📌 拍摄 2 张图像,裁剪两张图像的一部分并交换它们。
📌 拍摄 2 张图像并将其组合成一张图像。例如,拼贴
因此,在本文中,我们将了解如何使用Python中的OpenCV模块创建图像、截取 2 张图像、交换它们并组合两张图像以形成单个图像。
图像处理
图像处理是一种对图像执行某些操作的方法,以获得增强的图像或从中提取一些有用的信息。图像处理是对数字化图像的分析和处理,尤其是为了提高其质量。
python中的OpenCV模块是什么?
OpenCV
是一个用于计算机视觉、机器学习和图像处理的大型开源库。OpenCV 支持多种编程语言,如 Python、C++、Java 等。它可以处理图像和视频以识别物体、面部甚至人类的笔迹。OpenCV解决了很多应用,其中一些是人脸和物体识别,视频/图像搜索和检索,电视频道广告识别和街景图像拼接。安装和导入包
从这里下载 Anaconda 的个人版:https://www.anaconda.com/products/individual 在 python 中安装 NumPy
和OpenCV-Python
模块。
pip install numpy
pip install opencv-python
在python代码中导入上述模块
numpy
import
cv2
使用 Python 代码创建图像
OpenCV - Python是一个Python库,旨在解决计算机视觉问题。
cv2
是它提供许多方法来操作图像的模块之一。cv2
模块具有许多有助于读取和操作图像的功能。NumPy
在python中支持绘制各种形状。代码:
img = numpy.zeros((
512,
512,
3))
# Writing text
font = cv2.FONT_HERSHEY_SIMPLEX
img = cv2.putText(img,
'Image Creation', (
50,
50),font,
0.8, (
0,
255,
255),
2)
# Creating a Rectangles
img = cv2.rectangle(img,(
12,
12),(
312,
312),(
255,
255,
0),
3)
img = cv2.rectangle(img,(
100,
100),(
400,
400),(
0,
255,
0),
3)
img = cv2.rectangle(img,(
200,
200),(
500,
500),(
255,
0,
255),
3)
img = cv2.rectangle(img,(
300,
300),(
600,
600),(
5,
200,
2),
3)
img = cv2.rectangle(img,(
500,
500),(
600,
600),(
150,
0,
25),
3)
# Creating a Circle
img = cv2.circle(img, (
200,
200),
80, (
255,
0,
0),
3)
# Allows us to see image
cv2.imshow(
"myimage",img)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
输出:
读取 2 张图像,裁剪这两张图像的一部分并交换它们
step 1:导入
cv2
,可以观察到两张图。cv2.imread()
方法从指定文件加载图像。cv2.imshow()
方法用于在窗口中显示图像。cv2.waitkey()
会等待 x 毫秒来等待 OpenCV 窗口上的按键。cv2.destroyAllWindows()
简单地破坏我们创建的所有窗口。 cv2
#Allows us to read a image1
img1 = cv2.imread(
"1.jpg")
# Allows us to see image1
cv2.imshow(
"FirstImage",img1)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
输出:
img2 = cv2.imread(
"2.jpg")
# Allows us to see image2
cv2.imshow(
"SecondImage",img2)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
输出:
调整大小之前
Step2:
“resize”
两张图片的维度不一样,我们可以通过cv2模块中的方法来改变。new_img1 = cv2.resize(img1,(
900,
512))
# Allows us to see new_image1
cv2.imshow(
"NewFirstImage",new_img1)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
#Allows us to resize a image2new_img2 = cv2.resize(img2,(
900,
512))
# Allows us to see new_image2
cv2.imshow(
"NewSecondImage",new_img2)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
调整大小后两个图像的尺寸相同。
调整大小后
第 3 步:为了裁剪图像,我们使用以下代码
crop_img1=new_img1[
0:
200,
0:
200]
# Allows us to see crop_image1
cv2.imshow(
"CroppedFirstImage",crop_img1)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
crop_img2=new_img2[
0:
200,
0:
200]
# Allows us to see crop_image2
cv2.imshow(
"CroppedSecondImage",crop_img2)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
step4:为了用图像交换那些裁剪的部分,我们使用以下代码
swap_img1=crop_img2
new_img1[
200:
400,
200:
400]=swap_img1
# Allows us to see new_image1 after swapping
cv2.imshow(“SwappedFirstImage”,new_img1)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
用 SecondImage 的裁剪部分交换第一张图像
正如我们所知,我们不能在Python中将变量或值声明为常量。由于python变量是引用,我们有效地传递了引用的副本。
因此,如果我们将图像作为变量传递,并且不改变它,它实际上是“像”一个常量一样传递。但是在交换第一张图像时,我们会更改变量,因此在使用裁剪部分交换第二张图像时,我们必须再次执行步骤 2、3、4。
swap_img2=crop_img1
new_img2[
200:
400,
200:
400]=swap_img2
# Allows us to see new_image2 after swapping
cv2.imshow(“SwappedSecondImage”,new_img2)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
用 FirstImage 的裁剪部分交换第二张图像
读取 2 个图像,并将它们组合成一个图像。
例如:拼贴画
NumPy
在 python 中有一个名为的模块,它支持拼贴/组合图像。在这里,这两个图像是使用hstack()
拼贴/组合的,numpy 支持图像的水平组合。 cv2
import
numpy
#Allows us to read a image1
img1 = cv2.imread(“
1.jpg”)
#Allows us to read a image2
img2 = cv2.imread(“
2.jpg”)
new_img1 = cv2.resize(img1,(
600,
512))
new_img2 = cv2.resize(img2,(
600,
512))
horizontal_collage = numpy.hstack((new_img1,new_img2))
# Allows us to see image1
cv2.imshow(“Horizontal Collage”,horizontal_collage)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
水平组合图像
vstack()
用于图像的垂直组合。 cv2
import
numpy
#Allows us to read a image1
img1 = cv2.imread(
"1.jpg")
#Allows us to read a image2
img2 = cv2.imread(
"2.jpg")
new_img1 = cv2.resize(img1,(
300,
400))
new_img2 = cv2.resize(img2,(
300,
400))
vertical_collage = numpy.vstack((new_img1,new_img2))
# Allows us to see vertical_collage
cv2.imshow(
"Vertical Collage",vertical_collage)
cv2.waitKey(
10000)
# Until closed forcefully
cv2.destroyAllWindows()
垂直组合图像
结论
在本文中,我们看到了一些基本操作:如何创建、读取和调整图像大小、裁剪图像的某些部分并交换它们、水平或垂直组合两个图像。
在 python 中,有许多强大的库可以使图像处理变得容易,例如
OpenCV, SciKit-Image
和Pillow.``NumPy
是 Numeric 和 Numarray 的扩展。可以使用NumPy函数执行各种图像处理。使用此链接访问此处使用的所有代码:https://github.com/sakshijadhav92/Image_Processing.git
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。