亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

OpenCV如何提取圖片中曲線

2020-01-26 13:34:41
字體:
來源:轉載
供稿:網友

簡單介紹

  在實際的應用中,我們常常需要對圖像中的曲線進行描述、處理,這個曲線可以是輪廓,骨架或者其他??梢杂?span style="color: #800000">deque<Point> 描述曲線,接下來簡單介紹下如何從圖片中搜索這些曲線并保存。

  首先,輸入的圖片是一張二值圖片 (白色為曲線),其中包含的曲線寬度為 1 像素的 (如果曲線不是 1 像素的 先提取其骨架)。遍歷尋找圖像中第一個白色的點,然后從這個點開始延伸尋找曲線。注意,第一個找到的點不一定是曲線的端點,因此應該分別向兩邊尋找相鄰的點,因此deque 會好一些。每找到一個點,將其保存deque 而后置黑(防止重復尋找)。搜索到一個沒有相鄰點的點,表示一端搜索完成。

   值得注意的一點是,我在寫搜尋相鄰點的時候,會首先搜尋此點與上一個點相鄰位置相對的位置,如果沒有,則分別搜索向兩邊搜索。這樣的好處是可以減少尋找的次數,而且當有相交的曲線時,能連接到我們一般認為的曲線。

代碼

//尋找圖像曲線上某個點的下一個點bool findNextPoint(vector<Point> &_neighbor_points, Mat &_image, Point _inpoint, int flag, Point& _outpoint, int &_outflag){ int i = flag; int count = 1; bool success = false; while (count <= 7) {  Point tmppoint = _inpoint + _neighbor_points[i];  if (tmppoint.x > 0 && tmppoint.y > 0 && tmppoint.x < _image.cols&&tmppoint.y < _image.rows)  {   if (_image.at<uchar>(tmppoint) == 255)   {    _outpoint = tmppoint;    _outflag = i;    success = true;    _image.at<uchar>(tmppoint) = 0;    break;   }  }  if (count % 2)  {   i += count;   if (i > 7)   {    i -= 8;   }  }  else  {   i += -count;   if (i < 0)   {    i += 8;   }  }  count++; } return success;}//尋找圖像上的第一個點bool findFirstPoint(Mat &_inputimg, Point &_outputpoint){ bool success = false; for (int i = 0; i < _inputimg.rows; i++) {  uchar* data = _inputimg.ptr<uchar>(i);  for (int j = 0; j < _inputimg.cols; j++)  {   if (data[j] == 255)   {    success = true;    _outputpoint.x = j;    _outputpoint.y = i;    data[j] = 0;    break;   }  }  if (success)   break; } return success;}//尋找曲線 void findLines(Mat &_inputimg, vector<deque<Point>> &_outputlines){ vector<Point> neighbor_points = { Point(-1,-1),Point(0,-1),Point(1,-1),Point(1,0),Point(1,1),Point(0,1),Point(-1,1),Point(-1,0) }; Point first_point; while (findFirstPoint(_inputimg, first_point)) {  deque<Point> line;  line.push_back(first_point);  //由于第一個點不一定是線段的起始位置,雙向找  Point this_point = first_point;  int this_flag = 0;  Point next_point;  int next_flag;  while (findNextPoint(neighbor_points, _inputimg, this_point, this_flag, next_point, next_flag))  {   line.push_back(next_point);   this_point = next_point;   this_flag = next_flag;  }  //找另一邊  this_point = first_point;  this_flag = 0;  //cout << "flag:" << this_flag << endl;  while (findNextPoint(neighbor_points, _inputimg, this_point, this_flag, next_point, next_flag))  {   line.push_front(next_point);   this_point = next_point;   this_flag = next_flag;  }  if (line.size() > 10)  {   _outputlines.push_back(line);  } }}//隨機取色 用于畫線的時候Scalar random_color(RNG& _rng){ int icolor = (unsigned)_rng; return Scalar(icolor & 0xFF, (icolor >> 8) & 0xFF, (icolor >> 16) & 0xFF);}int main(){ Mat image = imread("images//2.bmp"); Mat gray; cvtColor(image, gray, CV_BGR2GRAY); vector<deque<Point>> lines; findLines(gray, lines); cout << lines.size() << endl; //draw lines Mat draw_img = image.clone(); RNG rng(123); Scalar color; for (int i = 0; i < lines.size(); i++) {  color = random_color(rng);  for (int j = 0; j < lines[i].size(); j++)  {   draw_img.at<Vec3b>(lines[i][j]) = Vec3b(color[0], color[1], color[2]);  } } imshow("draw_img", draw_img); imwrite("images//draw_img.bmp", draw_img); waitKey(0); system("pause"); return 0;}

結果

輸入圖像

結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产aⅴ夜夜欢一区二区三区| 精品久久久久久国产| 九九热r在线视频精品| 欧美精品一区二区三区国产精品| www亚洲欧美| 欧美—级高清免费播放| 日本三级韩国三级久久| 中文字幕亚洲综合久久筱田步美| 欧美中文字幕在线视频| 欧美日韩免费观看中文| 精品丝袜一区二区三区| 午夜精品福利电影| 亚洲欧美制服第一页| 日韩av免费在线播放| 欧美亚洲在线播放| 日韩在线中文字幕| 欧美成人精品在线视频| 亚洲欧美国产一本综合首页| 97国产在线观看| 久久综合久久八八| 国产视频亚洲精品| 91精品国产沙发| 欧美整片在线观看| 国产成人av在线| 久久五月天综合| 色偷偷偷综合中文字幕;dd| 久久久免费在线观看| 国产成人精品久久二区二区91| 国产69精品久久久久久| 久久久久中文字幕2018| 成人一区二区电影| 欧美极品美女视频网站在线观看免费| 欧美在线激情视频| 亚洲少妇激情视频| 精品福利在线视频| 成人免费在线视频网站| 亚洲精品国产精品国自产在线| www.日本久久久久com.| 欧美色播在线播放| 亚洲欧洲国产一区| 久久久女女女女999久久| 日韩精品在线免费观看视频| 91精品国产综合久久香蕉| 一本色道久久综合亚洲精品小说| 亚洲一区二区少妇| 日韩高清中文字幕| 色偷偷888欧美精品久久久| 亚洲欧美制服另类日韩| 欧美视频第一页| 亚洲欧美日韩图片| 成人激情视频小说免费下载| 欧美视频一区二区三区…| xxxxx成人.com| 日韩高清中文字幕| 俺去了亚洲欧美日韩| 欧美国产视频日韩| 亚洲精品视频在线播放| 欧美日韩国产中文精品字幕自在自线| 91亚洲精品久久久久久久久久久久| 欧美日韩国产色视频| 中文字幕视频在线免费欧美日韩综合在线看| 日韩av在线免费观看| 亚洲国产精品电影| 国产69精品久久久久9999| 国产精品香蕉国产| 日韩av电影在线网| 91久久在线观看| 亚洲性xxxx| 日韩视频一区在线| 亚洲第一精品久久忘忧草社区| 91国内在线视频| 日本精品久久中文字幕佐佐木| 亚洲成人网在线观看| xxx欧美精品| 成人精品视频99在线观看免费| 成人妇女淫片aaaa视频| 国产精品1234| 成人激情视频在线播放| 日韩国产一区三区| 中文字幕v亚洲ⅴv天堂| 国产在线a不卡| 欧美黑人一级爽快片淫片高清| 狠狠色狠狠色综合日日五| 国产香蕉一区二区三区在线视频| 91久久精品国产91性色| 国产精欧美一区二区三区| 欧美—级高清免费播放| 日韩中文在线视频| 成人欧美一区二区三区在线湿哒哒| 日韩一区二区在线视频| 亚洲精品美女久久久久| 日韩欧美在线视频免费观看| 亚洲欧美视频在线| 全亚洲最色的网站在线观看| 亚洲午夜色婷婷在线| 国产精品美女久久久免费| 成人有码在线播放| 亚洲成色777777在线观看影院| 亚洲免费人成在线视频观看| 精品亚洲男同gayvideo网站| 成人网页在线免费观看| 精品久久久久久久久久| 日韩欧美亚洲成人| 欧美高清无遮挡| 伊人久久精品视频| 都市激情亚洲色图| 97香蕉超级碰碰久久免费软件| 欧美精品制服第一页| 91成人在线观看国产| 欧美视频在线观看 亚洲欧| 亚洲精品福利免费在线观看| 久久婷婷国产麻豆91天堂| 富二代精品短视频| 欧美xxxx14xxxxx性爽| 午夜精品在线观看| 国产亚洲精品久久久优势| 欧美丰满少妇xxxxx| 欧美午夜精品久久久久久久| 欧美日韩亚洲视频| 亚洲香蕉成视频在线观看| 国内精品久久久久久影视8| 91欧美视频网站| 欧美一级在线亚洲天堂| 国产精品91一区| 久久偷看各类女兵18女厕嘘嘘| 中文字幕亚洲无线码在线一区| 久久精品国产精品亚洲| 国产亚洲精品日韩| 国产精品视频午夜| 国产精品视频中文字幕91| 色一情一乱一区二区| 日韩免费观看高清| 精品一区二区三区三区| 日韩在线播放视频| 欧美日韩国产在线播放| 国产在线久久久| 川上优av一区二区线观看| 中日韩午夜理伦电影免费| 亚洲人在线视频| 国产美女被下药99| 国产精品美女久久| 色老头一区二区三区在线观看| 成人黄色网免费| 欧美精品亚州精品| 国产精品一区=区| 中文字幕亚洲激情| 在线日韩第一页| 国产精品麻豆va在线播放| 亚洲第一天堂av| 国产主播欧美精品| 亚洲影视中文字幕| 久久久久中文字幕2018| 国产欧美精品va在线观看| 国产亚洲免费的视频看| 亚洲欧美中文日韩在线| 久久久久久国产免费| 自拍偷拍亚洲一区| 亚洲欧美日韩精品| 亚洲午夜性刺激影院| 成人综合网网址| 91久久精品美女高潮| 在线视频欧美日韩| 国产视频综合在线| 91精品在线播放|