使用OpenCV获取图像某点的颜色值,并设置某点的颜色


Posted in Python onJune 02, 2020

以下用OpenCV实现获取图像中某点的颜色值,并设置某点区域的颜色

#include <opencv2\opencv.hpp>
using namespace cv;
 
vector<char*> listFiles(const char * dir);
int main()
{
 Mat img = imread("D:\\OpencvTest\\test.jpg");
 Scalar color = img.at<Vec3b>(150, 150);//读取原图像(150, 150)的BGR颜色值,如果是灰度图像,将Vec3b改为uchar
 for (size_t row=0; row<50; row++)
 for (size_t col=0;col<img.cols;col++)
 {
  //设置原图像中某点的BGR颜色值
  img.at<Vec3b>(row, col) = Vec3b(color(0), color(1), color(2));
 
 }
 cv::circle(img, Point(150, 150), 4, cv::Scalar(0, 0, 255));//在图像中画出特征点,2是圆的半径
 imshow("img", img);
 waitKey(0);
 return 0;
}

运行效果:

使用OpenCV获取图像某点的颜色值,并设置某点的颜色

补充知识:opencv中对图片的二值化操作并提取特定颜色区域

我就废话不多说了,大家还是直接看代码吧!

#include<opencv2/core/core.hpp> 
#include<opencv2/highgui/highgui.hpp> 
#include<opencv2/imgproc/imgproc.hpp> 
#include <vector>
#include<iostream> 
#include<string>

using namespace std;
using namespace cv;
//bgr图像 
Mat bgr;
//HSV图像 
Mat hsv;
//色相 
int hmin = 0;//h分量取下限
int hmax = 180;//h分量取上限
int h_Max = 180; //h分量可取的最大值
//饱和度 
int smin = 0;//s分量取下限
int smax = 255;//s分量取上限
int s_Max = 255;//s分量可取的最大值
//亮度 
int vmin = 0;//v分量取下限
int vmax = 255;//v分量取上限
int v_Max = 255;//v分量可取的最大值

string windowName = "src";

string dstName = "dst";
//输出图像 
Mat dst;
//回调函数 
void callBack(int, void*)
{
  //输出图像分配内存 
  dst = Mat::zeros(bgr.size(), bgr.type());
   
  Mat mask;
  inRange(hsv, Scalar(hmin, smin, vmin), Scalar(hmax, smax, vmax), mask);
   
  for (int r = 0; r < bgr.rows; r++)
  {
    for (int c = 0; c < bgr.cols; c++)
    {
      if (mask.at<uchar>(r, c) == 255)
      {
        dst.at<Vec3b>(r, c)[0] = bgr.at<Vec3b>(r, c)[0];
        dst.at<Vec3b>(r, c)[1] = bgr.at<Vec3b>(r, c)[1];
        dst.at<Vec3b>(r, c)[2] = bgr.at<Vec3b>(r, c)[2];
      }
    }
  }
  imshow("mask", mask);
  //输出图片
  imshow("dst", dst);
}
int main()
{
  //输入图片 
  Mat srcImage = imread("C:\\Users\\Administrator\\Desktop\\0001.jpg");
  if (!srcImage.data){
    cout << "图片读取失败" << endl;
    system("pause");
    return -1;
  }
  imshow(windowName, srcImage);
  bgr = srcImage;
  //颜色空间转换 
  cvtColor(bgr, hsv, COLOR_BGR2HSV);
  //定义输出图像的显示窗口 
  namedWindow(dstName, 0);
  //调节色相 H 
  createTrackbar("hmin", dstName, &hmin, h_Max, callBack);
  createTrackbar("hmax", dstName, &hmax, h_Max, callBack);
  //调节饱和度 S 
  createTrackbar("smin", dstName, &smin, s_Max, callBack);
  createTrackbar("smax", dstName, &smax, s_Max, callBack);
  //调节亮度 V 
  createTrackbar("vmin", dstName, &vmin, v_Max, callBack);
  createTrackbar("vmax", dstName, &vmax, v_Max, callBack);
  callBack(0, 0);
  waitKey(0);
  return 0;
}

以上这篇使用OpenCV获取图像某点的颜色值,并设置某点的颜色就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python中的try和finally和with方法
May 05 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
Java分治归并排序算法实例详解
Dec 12 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python用match()函数爬数据方法详解
Jul 23 Python
python3中替换python2中cmp函数的实现
Aug 20 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
Python列表嵌套常见坑点及解决方案
Sep 30 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
详解Python flask的前后端交互
Mar 31 Python
如何利用python web框架做文件流下载的实现示例
Jun 02 #Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
Jun 02 #Python
Java多线程实现四种方式原理详解
Jun 02 #Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
Jun 02 #Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
Jun 02 #Python
简单介绍一下pyinstaller打包以及安全性的实现
Jun 02 #Python
Python几种常见算法汇总
Jun 02 #Python
You might like
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
php对数组排序代码分享
2014/02/24 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
jquery()函数的三种语法介绍
2013/10/09 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
jQuery实时统计输入框字数及限制
2020/06/24 jQuery
Vue中 axios delete请求参数操作
2020/08/25 Javascript
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
python字典操作实例详解
2017/11/16 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
2019/07/25 Python
np.dot()函数的用法详解
2020/01/17 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
Python代码注释规范代码实例解析
2020/08/14 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
就业自荐信
2013/12/04 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2019思想汇报范文
2019/05/21 职场文书