簡體   English   中英

在opencv c ++中裁剪圖像后,如何擺脫剩余的空白?

[英]How do you get rid of the blank gap left after cropping an image in opencv c++?

我正在編寫一個程序來分析圖片並將它們裁剪到圖片中的對象周圍。 該程序可以很好地裁剪圖像,但是在側面留下了一個怪異的間隙。

我從以下問題的批准答案中復制了代碼: Opencv c ++檢測並裁剪圖像上的白色區域

我開始的圖像在較大的畫布上看起來像這樣。 我得到了這個結果,但是我想擺脫左側的多余空白,以便裁切超級接近手機外殼的產品。 如果在新選項卡中打開圖像,將會更好看。

請幫忙。 我在Visual Studio 2015中使用opencv和c ++。

結果

由於椒鹽噪聲,無法正確裁剪這張照片。 要消除它,您可以使用中值模糊 您可以使用模糊的圖像填充nonBlackList並使用此列表正確裁剪原始圖像。 由於出現噪點后圖像看起來被略微放大,因此您應該嘗試將光圈大小至少設為5以完全消除它。

cv::Mat in = cv::imread("CropWhite.jpg");
cv::Mat blurred;
cv::medianBlur(in, blurred, 5);

...

if(blurred.at<cv::Vec3b>(j,i) != cv::Vec3b(255,255,255))
{
    nonBlackList.push_back(cv::Point(i,j));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM