opencv2 tutorial_code ImgTrans部分
来源:互联网 发布:衢州学院网络教学平台 编辑:程序博客网 时间:2024/05/22 17:47
1、CannyDetector_Demo.cpp Canny边缘检测
(1)矩阵创建方法:Mat m; m.create(s.size(), s.type());
(2)先灰度化,再滤波,最后进行边缘检测
(3) Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size ); //参数:输入图像、输出图像、低阈值、高阈值、核大小
2、copyMakeBorder_demo.cpp 扩充图像边缘,使图像放大
(1)RNG类:
RNG rng(12345);
rng.uniform(0, 255);
参考博客:http://blog.csdn.net/bitowang/article/details/8991931
copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );
参考博客:http://blog.csdn.net/qq_22764813/article/details/52787553
3、filter2D_demo.cpp 利用内核实现卷积运算
参考博客:http://blog.csdn.net/keith_bb/article/details/53103026
4、Geometric_Transforms_Demo.cpp 图像弯曲、旋转
warp_mat = getAffineTransform( srcTri, dstTri );
warpAffine( src, warp_dst, warp_mat, warp_dst.size() );
rot_mat = getRotationMatrix2D( center, angle, scale );
warpAffine( warp_dst, warp_rotate_dst, rot_mat, warp_dst.size() );
5、HoughCircle_Demo.cpp 霍夫圆
std::vector<Vec3f> circles;
circles:为输出圆向量,每个向量包括三个浮点型的元素——圆心横坐标,圆心纵坐标和圆
半径;
method:为使用霍夫变换圆检测的算法,Opencv只实现了2-1霍夫变换,它的参数是
CV_HOUGH_GRADIENT;(一直都是如此)
dp:为第一阶段所使用的霍夫空间的分辨率,dp=1时表示霍夫空间与输入图像空间的大小
一致,dp=2时霍夫空间是输入图像空间的一半,以此类推;
minDist:为圆心之间的最小距离,如果检测到的两个圆心之间距离小于该值,则认为它们是
同一个圆心;
param1:为边缘检测时使用Canny算子的高阈值;
param2:为步骤1.5和步骤2.5中所共有的阈值;
minRadius,maxRadius:为所检测到的圆半径的最小值和最大值。
6、HoughLines_Demo.cpp 霍夫直线
vector<Vec2f> s_lines;
HoughLines( edges, s_lines, 1, CV_PI/180, min_threshold + s_trackbar, 0, 0 );
for( size_t i = 0; i < s_lines.size(); i++ )
{
float r = s_lines[i][0], t = s_lines[i][1];
double cos_t = cos(t), sin_t = sin(t);
double x0 = r*cos_t, y0 = r*sin_t;
double alpha = 1000;
Point pt1( cvRound(x0 + alpha*(-sin_t)), cvRound(y0 + alpha*cos_t) );
Point pt2( cvRound(x0 - alpha*(-sin_t)), cvRound(y0 - alpha*cos_t) );
line( standard_hough, pt1, pt2, Scalar(255,0,0), 3, LINE_AA);
}
累计概率霍夫变换:
vector<Vec4i> p_lines;
for( size_t i = 0; i < p_lines.size(); i++ )
{
Vec4i l = p_lines[i];
line( probabilistic_hough, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(255,0,0), 3, LINE_AA);
}
7、imageSegmentation.cpp 图像分割
(1)原图-filter图=使图像更显眼
(2)distanceTransform()方法,可以实现图像细化、查找图像质心
参考博客:http://blog.csdn.net/dcrmg/article/details/52517991
(3)分水岭算法
8、Laplace_Demo.cpp 拉普拉斯变换
Laplacian( src_gray, dst, ddepth, kernel_size, scale, delta, BORDER_DEFAULT );
9、Remap_Demo.cpp 重映射
重映射:就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。
10、Sobel_Demo.cpp
Sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, BORDER_DEFAULT );
Sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, BORDER_DEFAULT );
convertScaleAbs( grad_x, abs_grad_x );
convertScaleAbs( grad_y, abs_grad_y );
addWeighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );
- opencv2 tutorial_code ImgTrans部分
- \tutorial_code\ImgTrans\
- \tutorial_code\ImgTrans
- opencv2 tutorial_code ImgProc部分
- \tutorial_code\ImgTrans\filter2D_demo.cpp
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(Canny边缘检测)
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(仿射变换)
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(Hough变换)
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(图片边框与图片卷积)
- OpenCV2.4.10之samples_cpp_tutorial-code_learn-----ImgTrans(Laplace边缘检测和Sobel边缘检测,图像重映射)
- \tutorial_code\Histograms_Matching
- \tutorial_code\ShapeDescriptors
- \tutorial_code\HighGUI
- \tutorial_code\introduction\display_image
- \tutorial_code\introduction\windows_visual_studio_Opencv
- \tutorial_code\core\mat_the_basic_image_container
- \tutorial_code\core\how_to_scan_images
- \tutorial_code\core\mat_mask_operations
- session、cookie区别?get、post区别?
- SpringBoot+rabbitMq的配置和使用Demo
- Nexus 搭建Maven私服
- Deploying Tensorflow model on Andorid device for Human Activity Recognition
- java基于springBoot项目搭建
- opencv2 tutorial_code ImgTrans部分
- Java中使用Jedis操作Redis
- html网页布局总结
- KendoUI系列:switch 开关
- Net-snmp总结(五)-net-snmp的MIBs扩展_添加trap
- java读取opc服务器
- linux 查看设备详细
- 利用RMI实现远程方法调用获取数据库的内容
- 移动端高清、多屏适配方案