opencv举例
来源:互联网 发布:阿里云平台介绍 编辑:程序博客网 时间:2024/06/05 16:18
进度条演示
#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include <iostream>using namespace cv;using namespace std;Mat img;int threshval = 100;#define FILE_PATH_TEST "E:\\sunwork\\OpenCVTest\\TestImage\\stuff.jpg" void on_trackbar(int, void*){ Mat bw = threshval < 128 ? (img < threshval) : (img > threshval); vector<vector<Point> > contours; vector<Vec4i> hierarchy; findContours( bw, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE ); //namedWindow( "Image11", 1 ); // imshow( "Image11", contours ); Mat dst = Mat::zeros(img.size(), CV_8UC3); if( !contours.empty() && !hierarchy.empty() ) { // iterate through all the top-level contours, // draw each connected component with its own random color int idx = 0; for( ; idx >= 0; idx = hierarchy[idx][0] ) { //Scalar color( (rand()&255), (rand()&255), (rand()&255) );//generate rand color Scalar color( (255), (255), (255) );//generate rand color drawContours( dst, contours, idx, color, CV_FILLED, 8, hierarchy ); } } imshow( "Connected Components", dst );}void help(){ cout << "\n This program demonstrates connected components and use of the trackbar\n" "Usage: \n" " ./connected_components <image(stuff.jpg as default)>\n" "The image is converted to grayscale and displayed, another image has a trackbar\n" "that controls thresholding and thereby the extracted contours which are drawn in color\n";}int main( int argc, const char** argv ){ help(); string inputImage ="stuff.jpg"; img = imread(FILE_PATH_TEST, 0);//Read the gray image if(img.empty()) { cout << "Could not read input image file: " << inputImage << endl; return -1; } namedWindow( "Image", 1 ); imshow( "Image", img ); namedWindow( "Connected Components", 1 ); createTrackbar( "Threshold", "Connected Components", &threshval, 255, on_trackbar ); on_trackbar(threshval, 0); waitKey(60000); return 0;}
进度条对图像像素点操作演示
//-----------------------------------【程序说明】---------------------------------------------- // 程序名称::创建Trackbar&图像对比度、亮度值调整 // VS2010 OpenCV:2.3.1 // 2017年1月17 日 Use by sunlinju //------------------------------------------------------------------------------------------------ #include <opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include"opencv2/imgproc/imgproc.hpp" #include <iostream> using namespace std; using namespace cv; static void ContrastAndBright(int, void *); #define FILE_PATH_TEST "E:\\sunwork\\OpenCVTest\\TestImage\\TEST.jpg" int g_nContrastValue;int g_nBrightValue; Mat g_srcImage,g_dstImage; int main( ) { //set initial value g_nContrastValue=80; g_nBrightValue=80; g_srcImage= imread( FILE_PATH_TEST); //imread the image if(!g_srcImage.data ) { printf("Imread image wrong!\n"); return false; } g_dstImage= Mat::zeros( g_srcImage.size(), g_srcImage.type() ); namedWindow("WindowsName", 1); createTrackbar("Contrast", "WindowsName",&g_nContrastValue,300,ContrastAndBright ); createTrackbar("Bright","WindowsName",&g_nBrightValue,200,ContrastAndBright ); //recall the function ContrastAndBright(g_nContrastValue,0); ContrastAndBright(g_nBrightValue,0); //printf some help information cout<<endl<<"\t[1]you can set the contrast and brightness;\n\n" <<"\t[2]Press q,quit the programe;\n" <<"\n\n\t\t\t\tby sun"; //Press q for quite while(char(waitKey(1)) != 'q') {} return 0; } //-----------------------------ContrastAndBright( )------------------------------------ // Descripition:Convert the Contrast and brightness//-------------------------------------------------------------------------------------static void ContrastAndBright(int, void *) { namedWindow("【Original】", 1); //do g_dstImage(i,j) =a*g_srcImage(i,j) + b for(int y = 0; y < g_srcImage.rows; y++ ) { for(int x = 0; x < g_srcImage.cols; x++ ) { for(int c = 0; c < 3; c++ ) { g_dstImage.at<Vec3b>(y,x)[c]= saturate_cast<uchar>( (g_nContrastValue*0.01)*(g_srcImage.at<Vec3b>(y,x)[c] ) + g_nBrightValue ); } } } //y是像素所在的行, x是像素所在的列, c是R、G、B(对应0、1、2)其中之一//运算结果可能超出像素取值范围(溢出),还可能是非整数(如果是浮点数的话),所以我们要用saturate_cast对//结果进行转换,以确保它为有效值//a也就是对比度,一般为了观察的效果,取值为0.0到3.0的浮点值,但是我们的轨迹条一般取值都会整数,所以在这//里我们可以,将其代表对比度值的nContrastValue参数设为0到300之间的整型,在最后的式子中乘以一个0.01,//这样就可以完成轨迹条中300个不同取值的变化 imshow("【Original】", g_srcImage); imshow("WindowsName", g_dstImage); }
0 0
- opencv举例
- opencv矩阵乘法举例
- OpenCV cvBoundingRect应用举例
- OpenCV 中的 cvMatchTemplate() 的使用举例
- OpenCV 中的 cvMatchTemplate() 的使用举例
- OpenCV使用简单举例-图像显示
- OpenCV中Mat数据结构使用举例
- OpenCV中Mat数据结构使用举例
- OpenCV 中的 cvMatchTemplate() 的使用举例
- OpenCV中Mat数据结构使用举例
- OpenCV alpha(权因子) 融合举例
- 举例
- openCV中贝叶斯分类器相关的API及其用法举例
- filter举例
- yield 举例
- PTC举例
- zipfile举例
- netflowv9举例
- C++ 基础知识回顾
- leetcode 103. Binary Tree Zigzag Level Order Traversal
- 解决tomcat8080端口被占用问题
- 先简单介绍下现在的情况吧,希望我的经历能作为别人的参考,虽然也没有什么人看
- mysql性能调优
- opencv举例
- Linux下配置汇编编译器NASM和bochs模拟器
- Struts2学习之1(Struts2的工作流程,动作类的编写,struts.xml配置文件的编写)
- 模仿企业团队合作开发——svn的简单搭建与使用(Windows)
- 乐观锁和悲观锁
- 浅析ReactNative之通信机制(一)
- 判断字符串中是否含有字母数字下划线
- Jetty 的安全性
- 关于3倍数的逆序数,即当i<j时,a[i]>3a[j]的序列逆序数。