使用OpenCV獲取圖像某點的顏色值,并設置某點的顏色
更新時間:2020年06月02日 11:40:01 作者:pan_jinquan
這篇文章主要介紹了使用OpenCV獲取圖像某點的顏色值,并設置某點的顏色,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
以下用OpenCV實現(xiàn)獲取圖像中某點的顏色值,并設置某點區(qū)域的顏色
#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中對圖片的二值化操作并提取特定顏色區(qū)域
我就廢話不多說了,大家還是直接看代碼吧!
#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;
//回調(diào)函數(shù)
void callBack(int, void*)
{
//輸出圖像分配內(nèi)存
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;
//顏色空間轉(zhuǎn)換
cvtColor(bgr, hsv, COLOR_BGR2HSV);
//定義輸出圖像的顯示窗口
namedWindow(dstName, 0);
//調(diào)節(jié)色相 H
createTrackbar("hmin", dstName, &hmin, h_Max, callBack);
createTrackbar("hmax", dstName, &hmax, h_Max, callBack);
//調(diào)節(jié)飽和度 S
createTrackbar("smin", dstName, &smin, s_Max, callBack);
createTrackbar("smax", dstName, &smax, s_Max, callBack);
//調(diào)節(jié)亮度 V
createTrackbar("vmin", dstName, &vmin, v_Max, callBack);
createTrackbar("vmax", dstName, &vmax, v_Max, callBack);
callBack(0, 0);
waitKey(0);
return 0;
}
以上這篇使用OpenCV獲取圖像某點的顏色值,并設置某點的顏色就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python 數(shù)據(jù)可視化之Matplotlib詳解
這篇文章主要介紹了Python數(shù)據(jù)可視化庫seaborn的使用總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-11-11
python通過paramiko復制遠程文件及文件目錄到本地
這篇文章主要為大家詳細介紹了python通過paramiko復制遠程文件及文件目錄到本地,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
在Python中處理字符串之isdecimal()方法的使用
這篇文章主要介紹了在Python中處理字符串之isdecimal()方法的使用,是Python入門學習的基礎知識,需要的朋友可以參考下2015-05-05

