1.Inrange:二值化处理,如果在阈值内则像素值为255,否则为0
Mat image;
Mat hsv
cvtColor(image,hsv,COLOR_BGR2HSV);
Mat mask;
inRange(hsv,Scalar(35,43,46),Scalar(77,255,255),mask);
Mat redback = Mat::zeros(image.size(),image.type());
redback = Scalar(40,40,200);
bitwise_not(mask,mask);
imshow("mask",mask);
image.copyTo(redback,mask);
inshow("区域提取",redback);
2.像素统计
double minV,maxV;
Point minLoc,maxLoc;
std::vector<Mat> mv;
split(image,mv);
for(Mat v : mv){
minMaxLoc(v,&minV,&maxV,&minLoc,&maxLoc,Mat());
}
Mat mean,stddev; //均值和方差
meanStdDev(image,mean,stddev);
3.加权融合
addWeighted
4.随机数
Mat canvas;
Rgn rgn(1234);
int x = rgn.uniform(最小值,最大值);
//如果一次只显示一条直线,则背景色设置为黑色,否则不对背景色设置
canvas = Scalar(0,0,0);
5.多边形绘制与填充
fillpoly 填充
polyline 绘制
drawContours 既绘制又填充
5.鼠标点击事件
cv::SetMouseCallBack
cv::MouseCallback(int event,int x,int y,int flag,void *usedata);
6.图形的缩放
图形的缩放是通过对图形矩阵的差值来实现图片的缩放的
======opencv vs出错点总结
1.imread读取图片出错
解决方法:在Debug配置下编译时,在添加依赖库时,将".lib"放在了"d.lib"之前的原因造成的,将"d.lib"删除之后,就读取成功了。
2.无法识别SURF模块
解决方案:是放在附加模块里的,需要联合编译,参考解决方案:opencv安装和配置完整版教程
部分内容参考Opencv学堂