OpenCV Core组件操作
来源:互联网 发布:ps软件文字编辑 编辑:程序博客网 时间:2024/05/29 18:24
最近在复习opencv,整理一下基础知识。今天把Core组件的相关操作记录下来,常用的操作有以下几个:
Mat结构体
访问像素
Matimage;
Uchar*data = image.ptr<uchar>(i);
Mat_<Vec3b>::iteratorit = image.begin<Vec3b>();
(*it)[0];
Image.at<Vec3b>(i,j)[0];
图像叠加、混合
Matimage;
Image= iamge(Rect(500,250,logo.cols,log.rows));
Image= image(Range(250,250+logoimage.rows), Range(250,250+logoimage.cols));
logoImage.copyTo(image,mask);
addWeighted();
通道分离、合并
Spilt();
Merge();
对比度、亮度调节
下面记录一个VS下面的例子,方便以后利用、查看。
#include<iostream>#include "classify.h"#include<math.h>#define max(a,b) a>b?a:busing namespace std;#define WINDOW_NAME "融合"int g_nAl = 0;void on_Trackbar(int a, void* c)//添加进度条{cv::Mat image1 = cv::imread("D:\\OpenCVprivate\\4.jpg");cv::resize(image1, image1, cv::Size(720, 1280), 0.0, 0.0, CV_INTER_NN);cv::Mat imageResult;cv::Mat image2 = cv::Mat::zeros(image1.size(), image1.type());try{addWeighted(image1, g_nAl / 100.0, image2, 1 - g_nAl / 100.0, 20.0, imageResult);}catch (...){}cv::imshow("WINDOW_NAME", imageResult);cv::waitKey(10);}void imageAdd()//图像融合{cv::Mat image1 = cv::imread("D:\\OpenCVprivate\\3.jpg");cv::Mat image2 = cv::imread("D:\\OpenCVprivate\\5.jpg");cv::Mat image3 = cv::imread("D:\\OpenCVprivate\\4.jpg");cv::resize(image1, image1, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);cv::resize(image2, image2, cv::Size(300, 250), 0.0, 0.0, CV_INTER_NN);cv::resize(image3, image3, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);cv::Mat image4 = image1(cv::Rect(500, 300, image2.cols, image2.rows));image2 = cv::min(image4, image2);image2.copyTo(image4, cv::Mat());cv::imshow("result", image1);addWeighted(image1, 0.5, image3, 0.5, 0.0, image1);cv::imshow("图像融合", image1);cv::waitKey();}void splitMerge()//通道分离、合并{cv::Mat image1 = cv::imread("D:\\OpenCVprivate\\7.jpg");cv::Mat image2 = cv::imread("D:\\OpenCVprivate\\11.jpg");cv::Mat image3 = cv::imread("D:\\OpenCVprivate\\12.jpg");cv::resize(image2, image2, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);cv::resize(image1, image1, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);cv::resize(image3, image3, cv::Size(869, 1200), 0.0, 0.0, CV_INTER_NN);cv::Mat image4;cv::Mat spilt1[3];cv::Mat spilt2[3];cv::Mat spilt3[3];split(image1, spilt1);split(image2, spilt2);split(image3, spilt3);spilt1[2] = spilt1[2];spilt1[2] = spilt3[2];merge(spilt1, 3, image4);cv::imshow("分离、合并", image4);cv::waitKey();}void brightnessContrast(int value, int value2)//亮度对比度调节{cv::Mat image = cv::imread("D:\\OpenCVprivate\\3.jpg");image.rowRange(0, 10).setTo(cv::Scalar(0));image.colRange(image.cols - 10, image.cols).setTo(cv::Scalar(0));image.colRange(0, 10).setTo(cv::Scalar(0));image.rowRange(image.rows - 10, image.rows).setTo(cv::Scalar(0));for (int y = 10; y < image.rows - 10; y++)for (int x = 10; x < image.cols - 10; x++)for (int c = 0; c < image.channels(); c++){image.at<cv::Vec3b>(y, x)[c] = MIN((value*0.01)*(image.at<cv::Vec3b>(y, x)[c] + value2), 255);image.at<cv::Vec3b>(y, x)[c] = MAX(image.at<cv::Vec3b>(y, x)[c], 0);}cv::imshow("亮度对比度", image);cv::waitKey();}int main(){imageAdd();splitMerge();brightnessContrast(120,0);//修改图像对比度(120%),亮度(+0)g_nAl = 70;double g_nMax = 100;cv::namedWindow(WINDOW_NAME,1);cv::createTrackbar("name:",WINDOW_NAME,&g_nAl,g_nMax,on_Trackbar); cv::waitKey();return 0;}正常运行是没问题,知识没有整理,看起来会有些不舒服。好在代码不多,有时间在整理吧
阅读全文
0 0
- OpenCV Core组件操作
- 【openCV入门之四】 Core组件进阶
- [Learning OpenCV入门3] OpenCV数据结构及core组件
- core组件之操作图像中的像素
- OpenCV常用组件——HighGUI/core/imgproc
- 【OpenCV】OpenCV3的第三天——core组件
- 【OpenCV】OpenCV3的第四天——core组件进阶
- OpenCV从入门到放弃(三):Core组件细讲
- [Learning OpenCV入门 3]OpenCV的数据结构及core组件【未完待续】
- OpenCv (正式篇)6----core组件--Mat(最基本的图像数据类型)
- 第2章 Opencv图像处理初阶(core组件)
- 《OpenCV编程入门》第五章core组件进阶学习笔记part 1
- opencv学习-core
- OpenCV Core模块
- opencv core operation
- Spring core组件
- core组件进阶
- OpenCV学习笔记(四十三)——存取像素值操作汇总core
- SVN使用常见问题
- Spring线程池ThreadPoolTaskExecutor
- java.sql.SQLException: Cannot set cid: incompatible types. Query: select * from category Parameters:
- nefu115 斐波那契的整除(数论,整除推导)
- 1安装vsftpd
- OpenCV Core组件操作
- Maximum Product Subarray问题及解法
- webview的使用
- 浅析MySQL中EXPLAIN解释命令
- Android EditText 设置键盘 搜索,回车
- Android自定义TitleBar/ActionBar
- AS关于gradle的一些问题
- bochs虚拟机简介
- 【BZOJ2158】Crash的旅行计划