91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 217KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-03
  • 語言: 其他
  • 標簽: opencv??

資源簡介

###對該程序做如下說明: * 采用的是opencv3.X版本 * 針對不同的圖片,需要自己手動修改閾值`g_threshVal, g_threshMax` * 程序是根據[`這一篇博客`](https://blog.csdn.net/rrrfff/article/details/77340641#commentBox)寫的,只是自己調通了以后,給大家也分享下 * 因為是自動找點,所以在設置的不太合理的情況下,會出現很奇怪的現象,后果不堪設想。

資源截圖

代碼片段和文件信息

#include
using?namespace?cv;
#define?CV_SHOW(x)?imshow(“df“x);waitKey(0)
static?void?testImageRectification(cv::Mat?&I);
void?main()
{
Mat?I;
//I?=?imread(“D:\\test.bmp“);
I?=?imread(“E:\\vs2015Project\\testDeDis\\待矯正的圖片.png“);
testImageRectification(I);
}
static?void?testImageRectification(cv::Mat?&image_original)
{
CV_SHOW(image_original);?//?CV_SHOW是cv::imshow的一個自定義宏,忽略即可
cv::Mat?&&image?=?image_original.clone();

cv::Mat?image_gray;
cv::cvtColor(image?image_gray?cv::COLOR_BGR2GRAY);
//cv::threshold(image_gray?image_gray?g_threshVal?g_threshMax?cv::THRESH_BINARY);
cv::threshold(image_gray?image_gray?110?250?cv::THRESH_BINARY);

std::vector?>?contours_list;
{
std::vector?hierarchy;
//?Since?opencv?3.2?source?image?is?not?modified?by?this?function
cv::findContours(image_gray?contours_list?hierarchy
cv::RetrievalModes::RETR_EXTERNAL?cv::ContourApproximationModes::CHAIN_APPROX_NONE);
}

for?(uint32_t?index?=?0;?index? cv::RotatedRect?&&rect?=?cv::minAreaRect(contours_list[index]);
if?(rect.size.area()?>?1000)?{
if?(rect.angle?!=?0.)?{
//?此處可通過cv::warpAffine進行旋轉矯正,本例不需要
}?//if

cv::Mat?&mask?=?image_gray;
cv::drawContours(mask?contours_list?static_cast(index)?cv::Scalar(255)?cv::FILLED);

cv::Mat?extracted(image_gray.rows?image_gray.cols?CV_8UC1?cv::Scalar(0));
image.copyTo(extracted?mask);
CV_SHOW(extracted);

std::vector?poly;
cv::approxPolyDP(contours_list[index]?poly?30?true);?//?多邊形逼近,精度(即最小邊長)設為30是為了得到4個角點
cv::Point2f?pts_src[]?=?{?//?此處順序調整是為了和后面配對,僅作為示例
poly[1]
poly[0]
poly[3]
poly[2]
};

cv::Rect?&&r?=?rect.boundingRect();?//?注意坐標可能超出圖像范圍
cv::Point2f?pts_dst[]?=?{
cv::Point(r.x?r.y)
cv::Point(r.x?+?r.width?r.y)
cv::Point(r.x?+?r.width?r.y?+?r.height)?
cv::Point(r.x?r.y?+?r.height)
};
cv::Mat?&&M?=?cv::getPerspectiveTransform(pts_dst?pts_src);?//?我這里交換了輸入,因為后面指定了cv::WARP_INVERSE_MAP,你可以試試不交換的效果是什么

cv::Mat?warp;?cv::warpPerspective(image?warp?M?image.size()?cv::INTER_LINEAR?+?cv::WARP_INVERSE_MAP?cv::BORDER_REPLICATE);
CV_SHOW(warp);
}?//if
}
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2437??2018-07-03?15:49??main.cpp
?????文件?????????312??2018-07-03?16:16??readMe.md
?????文件??????220677??2018-07-03?15:43??待矯正的圖片.png

評論

共有 條評論