【Python 常用脚本及命令系列 12.1 -- OpenCV 设置图片区域为某个颜色】

文章目录

    • cv2 设置图片区域颜色
    • 动态输入高和宽

cv2 设置图片区域颜色

你可以使用numpy的切片操作来选择图像的一部分,并使用赋值操作来设置颜色。以下是一个简单的Python脚本示例:

import cv2 
import numpy as np # 读取图像 
img = cv2.imread('input.jpg') # 设置图像的一部分颜色,例如设置左上角100x100区域为红色 
img[0:100, 0:100] = [0, 0, 255] # 保存修改后的图像 
cv2.imwrite('modified.jpg', img)

在这个脚本中,我们首先读取了一张名为 ‘input.jpg’ 的图像,然后使用 numpy 的切片操作选取了图像左上角的 100x100 像素区域,然后使用赋值操作将这一部分的颜色设置为红色(在OpenCV中,颜色的表示顺序为BGR,所以红色表示为[0, 0, 255])。最后,我们将修改后的图像保存为’modified.jpg’。

请注意,numpy的切片操作中,第一个索引是y坐标(垂直方向),第二个索引是x坐标(水平方向)。所以img[0:100, 0:100]选取的是图像左上角的区域。如果你想选取其他区域,可以调整切片操作的参数。例如,img[50:150, 50:150]会选取图像从(50, 50)开始的100x100像素区域。

以设置图片右下角100x100 区域为白色为例
要将图像的右下角 100x100 的区域设置为白色,你需要知道图像的宽度和高度,以便从正确的位置开始切片。
以下是一个Python脚本示例:

import cv2 
import numpy as np # 读取图像 
img = cv2.imread('input.jpg') # 获取图像的高度和宽度 
height, width = img.shape[:2] # 设置图像右下角的100x100区域为白色 
img[height-100:height, width-100:width] = [255, 255, 255] # 保存修改后的图像 
cv2.imwrite('modified.jpg', img)
  • 我们首先读取了一张名为’input.jpg’的图像,然后获取了图像的高度和宽度。
  • 然后,我们使用numpy的切片操作选取了图像右下角的100x100像素区域,然后使用赋值操作将这一部分的颜色设置为白色(在OpenCV中,颜色的表示顺序为BGR,所以白色表示为[255, 255, 255])。
  • 最后,我们将修改后的图像保存为’modified.jpg’。

请注意,如果图像的高度或宽度小于100 像素,你需要相应地调整切片操作的参数,否则会出现索引错误。

动态输入高和宽

import sys
import cv2 # 导入包
import numpy as np
from PIL import Imagenum_args = len(sys.argv)
print("The input length is:", num_args)
if num_args != 3:print("Plese input the height and width")exit(1)print("type:", type(sys.argv))
print("function name:", sys.argv[0])try:print("hight:", sys.argv[1])print("width:", sys.argv[2])
except Exception as e:print("Input Error:", e)img = cv2.imread(r'test.jpg')#
height, width = img.shape[:2]
img[height - int(sys.argv[1]) : height, width - int(sys.argv[2]) : width] = [255, 255, 255]
cv2.imwrite('modified.jpg', img)#read image
img_grey = cv2.imread('modified.jpg', cv2.IMREAD_GRAYSCALE)# define a threshold, 128 is the middle of black and white in grey scale
#thresh = 128
thresh = 210# assign blue channel to zeros
img_binary = cv2.threshold(img_grey, thresh, 255, cv2.THRESH_BINARY)[1]# 在窗口中显示图像
cv2.imshow(r'Image', img_binary)# 最后还要写一句代码,这样就可以使窗口始终保持住
cv2.waitKey(0)#最后别忘了释放窗口,养成良好习惯。
cv2.destroyAllWindows()#save image
cv2.imwrite('black-and-white.png',img_binary)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/143148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java读取OPC DA数据---Utgard

java读取OPC DA数据—Utgard Utgard库已经过时,原作者早已删除库,建议使用OPC UA,兼容OPC DA。 下面讲解Utgard使用 C#和C都不用配置DCOM,直接调用函数 既然是非要用Java,那就别想太方便,需要配置DCOM(后…

HTTP版本、状态码

目录 HTTP协议:无状态的协议(Cookie/Session识别->状态) Http和Https区别 端口80/443 HTTPS HTTP SSl/TLS协议(传输层) 明文/密文 对称加密 数据 非对称加密 秘钥 服务端的公钥和私钥,非对称加…

【python】Django——templates模板、静态文件、django模板语法、请求和响应

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——templates模板、静态文件、djang…

vue3 ts中使用axios链式报错:Property ‘code‘ does not exist on type ‘{}

在vue3项目中,链式调用接口的时候,报错:Property code does not exist on type {},如下代码: api1.then(res>{...return api(options) }).then(res2 >{if(res2.code200){ // 这里报错 Property code does not e…

如何实现Redisson分布式锁

首先,不要将分布式锁想的太复杂,如果我们只是平时业务中去使用,其实不算难,但是很多人写的文章不能让人快速上手,接下来,一起看下Redisson分布式锁的快速实现 Redisson 是一个在 Redis 的基础上实现的 Java…

公益SRC实战|SQL注入漏洞攻略

目录 一、信息收集 二、实战演示 三、使用sqlmap进行验证 四、总结 一、信息收集 1.查找带有ID传参的网站(可以查找sql注入漏洞) inurl:asp idxx 2.查找网站后台(多数有登陆框,可以查找弱口令,暴力破解等漏洞&…

SpringBoot和Spring源码下载

1.下载:在一个空的干净地创建一个文件夹叫springsourcecode,其实叫什么都行的。 git clone https://github.com/spring-projects/spring-framework.git 2.JDK要和gradle匹配 我们要21的,今天为止2023年11月13日,idea是2023.2。 …

python数据结构与算法-03_链表

链式结构 上一节讲到了支持随机访问的线性结构,这次我们开始讲链式结构, 视频里我会说下这两种结构的区别,然后讲解最常见的单链表和双链表。 之前在专栏文章那些年,我们一起跪过的算法题[视频]里实现过一个 lru_cache, 使用到的…

考研分享第3期 | 211本378分上岸大连理工电子信息经验贴

考研分享第3期 | 211本378分上岸大连理工电子信息经验贴 一、个人信息 姓名:Ming 本科院校:某211学校电子信息工程学院 电子科学与技术专业 上岸院校:大连理工大学 电子信息与电气工程学部 电子信息(0854) 择校意…

数据中心:精密空调监控,这招太高效了!

在当今日益复杂的工业环境中,精密空调系统的监控和管理变得至关重要。随着科技的迅猛发展,各行各业对温度、湿度和空气质量等参数的高度控制需求不断增加。 精密空调监控系统通过实时数据采集、分析和反馈,为企业提供了可靠的手段来确保生产环…

给你一个整数 n,请你判断该整数是否是 2 的幂次方。

题意: 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n 1…

settings.json配置

settings.json配置 {"editor.tabSize": 2,"git.ignoreWindowsGit27Warning": true,"workbench.editor.untitled.hint": "hidden","security.workspace.trust.untrustedFiles": "open","[vue]": {"…

dll文件【C#】

加载方法: [DllImport("controlcan.dll")] public static extern UInt32 VCI_OpenDevice(UInt32 DeviceType, UInt32 DeviceInd, UInt32 Reserved); 文件存放位置: 一般放Debug文件夹下。 运行错误: 原因是CPU位数选择不对&…

不变式和橄榄树-UMLChina建模知识竞赛第4赛季第20轮

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。第4题为附加题,对错不影响优胜者…

科普测量开关电源输出波形的三种方法及电源波形自动化测试步骤

开关电源波形测试就是对开关电源的输出波形进行检测和分析,观察开关电源参数变化,以此来判断开关电源的性能是否符合要求。好的开关电源对于设备以及整个电路的正常运行是非常重要的,因此开关电源输出波形测试是开关电源测试的重要环节&#…

数据同步工具调研选型:SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比

产品概述 Apache SeaTunnel 是一个非常易用的超高性能分布式数据集成产品,支持海量数据的离线及实时同步。每天可稳定高效同步万亿级数据,已应用于数百家企业生产,也是首个由国人主导贡献到 Apache 基金会的数据集成顶级项目。 SeaTunnel 主…

无人值守的共享台球室:微信小程序实现自助服务

随着科技的发展和互联网的普及,无人值守的共享台球室已经成为一种新型的娱乐方式。通过微信小程序,消费者可以实现在线预订、自助结账、评价反馈等一站式服务,带来更加便捷、高效的体验。本文将探讨如何利用微信小程序实现无人值守的共享台球…

vue滚动到指定位置

一、首先获取需要滚动的外层容器的宽度 let boxWidth this.$refs.box.offsetWidth二、计算出容器内单个元素的宽度,以12个为例 let itemWidth boxWidth / 12三、计算出容器内单个元素的宽度,以横向滚动,内部12个元素为例 this.$refs.box…

【Ubuntu】安装Docker

一、查看系统基本情况 1.1 查看系统版本 指令一 lsb_release -aNo LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal 指令二 cat /etc/lsb-release DISTRIB_IDUbuntu DISTRIB_RELEASE20.04 DISTRIB_CODE…

Flutter笔记 - 关于 fit 属性以及相关知识的总结

Flutter笔记 关于 fit 属性以及相关知识的总结 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/13434451…