Opencv常用圖像處理函數(c++和python)

學習,溫故而知新。我寫的東西都是給自己看的。方便平時忘記了,直接查看博客知道答案。
下面是常用的函數:
大家平時想學習圖像處理,可以去看那本opencv蝴蝶書。
下面給兩個學習opencv網址(C++的)
W3CschoolOpenCV官方文檔

網友整理的學習筆記

下面是詳細函數使用網址:
創建Mat
二值化閾值處理
膨脹腐蝕
形態學其他操作
查找輪廓
繪製矩形框
imwrite圖片保存質量
均值濾波和中值濾波

c++寫法:

	Mat img = imread("../2.png");
	Mat pic1= Mat(cv::Size(100, 200), CV_8UC3, cv::Scalar(0, 255, 0));//Mat 函數使用
	Mat gray,th,deal;
	cvtColor(img, gray, CV_BGR2GRAY);//灰度圖像
	Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3));//結構元素。內核的形狀,尺寸
	threshold(th, th, 0, 255, THRESH_BINARY);	//二值化閾值處理。取值範圍。閾值類型
	adaptiveThreshold(gray, th, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 25, 10);//自適應二值化閾值處理
	//形態學處理
	erode(th, th, kernel);	//腐蝕。縮小輪廓(黑底白輪廓)
	dilate(th, th, kernel);	//膨脹。擴大輪廓(黑底白輪廓)
	morphologyEx(th, th, MORPH_OPEN, kernel);//開操作
	morphologyEx(th, th, MORPH_CLOSE, kernel);//閉操作
	medianBlur(th,th,3);//中值濾波
	//提取輪廓
	vector<vector<Point>>cnts;
	vector<Vec4i>hierarchy;
	//檢測所有外輪廓, 找出輪廓點
	//填充內部小輪廓
	findContours(th, cnts, hierarchy, CV_RETR_LIST, CHAIN_APPROX_SIMPLE);//
	for (int i = 0; i < cnts.size(); i++)// 像素點個數  i是輪廓的數量
	{
		Rect xywh = boundingRect(cnts[i]);//計算輪廓的左上的座標和長寬信息
		double area = contourArea(cnts[i]);//計算輪廓的面積
		if(area > 50)
		{
			drawContours(deal, cnts, i, Scalar(0, 0, 0), 2);//繪製輪廓
			drawContours(deal, cnts, i, Scalar(0, 0, 0), CV_FILLED);//繪製填充輪廓
			line(frame, Point(100, 0), Point(100, 200), Scalar(255, 0, 0), 2);//繪製線條
			rectangle(deal, xywh, Scalar(0, 255, 0), 2);	//繪製矩形框
			rectangle(deal, xywh, Scalar(0, 0, 0), CV_FILLED);	//繪製填充矩形框
			//繪製文字
			putText(frame, "area:" + to_string((int)area), Point(xywh.x + 10, xywh.y + 30),
				CV_FONT_NORMAL, FONT_HERSHEY_PLAIN, Scalar(0, 0, 255), 2);
		}
		
	}
	hconcat(pic1, pic2, pic2);//水平拼接圖片
	cv::imwrite("savepic/" + to_string(num) + ".jpg", jietu);// 保存圖像至本地
	

python寫法:

在這裏插入代碼片

先寫到這
持續更新,加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章